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

看板Programming作者 (佛仔)時間1年前 (2023/11/24 06:36), 1年前編輯推噓1(107)
留言8則, 2人參與, 1年前最新討論串1/1
#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

11/24 12:23, 1年前 , 1F
你的舉的例子 f(a) 是 xvalue,如果你的
11/24 12:23, 1F

11/24 12:23, 1年前 , 2F
A 是 int,它就會變成 prvalue,f(a) =
11/24 12:23, 2F

11/24 12:23, 1年前 , 3F
a 就會不合法
11/24 12:23, 3F

11/24 18:17, 1年前 , 4F
請問C大指的「如果A是int」是指f的回傳
11/24 18:17, 4F

11/24 18:17, 1年前 , 5F
值如果不是A而是int嗎
11/24 18:17, 5F

11/24 20:42, 1年前 , 6F
嗯嗯...我的理解只到左值右值,xvalue
11/24 20:42, 6F

11/24 20:42, 1年前 , 7F
查了幾篇文章還是霧煞煞...想請問哪些
11/24 20:42, 7F

11/24 20:42, 1年前 , 8F
東西可以作為xvalue呢?
11/24 20:42, 8F
文章代碼(AID): #1bNzF_K0 (Programming)
文章代碼(AID): #1bNzF_K0 (Programming)