[請益] 左值右值與物件傳回

作者: amamoimi (佛仔)   2023-11-24 06:36:45
#include <iostream>
using namespace std;
class A{};
A f (A x){
return x;
}
int main (){
A a;
f (a) = a;
return 0;
}
當我這樣寫的時候,程式是合法的
#include <iostream>
using namespace std;
class A{};
A f (A x){
return x;
}
int main (){
A a;
cout<<&f (a);
return 0;
}
但是這樣寫的時候變成不合法了。錯誤訊息是說不能對右值取址
但是,f(a)不是可以放在左邊嗎(例一)我的認知是,可以放在左邊的就可以是左值不是嗎
?xd
或者說,f(A1)本身可以放在左邊也讓我覺得很疑惑,因為他應該只是函數的傳回值,如果
是一般的傳回值的確應該是不能當左值(除了參照我想不到別的..)
有人可以幫我解惑嗎 謝謝
p.s.c++關於記憶體的部分真的讓我蠻苦手的...想請問有沒有推薦的書呢,謝謝大家

Links booklink

Contact Us: admin [ a t ] ucptt.com