看板 Programming 關於我們 聯絡資訊
#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++關於記憶體的部分真的讓我蠻苦手的...想請問有沒有推薦的書呢,謝謝大家 ---- Sent from BePTT on my OPPO CPH1943 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.200.242.58 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1700779007.A.500.html ※ 編輯: amamoimi (1.200.242.58 臺灣), 11/24/2023 06:56:17
CoNsTaR: 你的舉的例子 f(a) 是 xvalue,如果你的 174.112.3.102 11/24 12:23
CoNsTaR: A 是 int,它就會變成 prvalue,f(a) = 174.112.3.102 11/24 12:23
CoNsTaR: a 就會不合法 174.112.3.102 11/24 12:23
amamoimi: 請問C大指的「如果A是int」是指f的回傳 1.200.242.58 11/24 18:17
amamoimi: 值如果不是A而是int嗎 1.200.242.58 11/24 18:17
amamoimi: 嗯嗯...我的理解只到左值右值,xvalue 1.200.242.58 11/24 20:42
amamoimi: 查了幾篇文章還是霧煞煞...想請問哪些 1.200.242.58 11/24 20:42
amamoimi: 東西可以作為xvalue呢? 1.200.242.58 11/24 20:42