[問題] 加上const後 就不是R-value ?

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間12年前 (2013/08/06 18:39), 編輯推噓2(206)
留言8則, 5人參與, 最新討論串1/1
今天無意間發現我不太能解釋這個現象 class Bar { public: Bar(int a) { } ~Bar() { } }; void Foo(Bar &a) { } int main() { Foo(56); } 這不會過 但我不太會解釋 是為什麼 是因為R value嗎? 但是我加上const後 就可以build過了~~ void Foo(const Bar &a) 我更想不懂 為什麼有差別了 請各位指點迷津謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66

08/06 18:48, , 1F
傳非變數,編譯會自動生成一個const variable來存
08/06 18:48, 1F

08/06 18:48, , 2F
所以傳56就被當成是傳一個const
08/06 18:48, 2F

08/06 18:49, , 3F
你原本是const to non-const當然不會過
08/06 18:49, 3F

08/06 19:44, , 4F
原本不會過是因為non const 而不是rvalue嗎?
08/06 19:44, 4F

08/06 19:51, , 5F
rvalue 可轉成 const lvalue,不能轉成 non-const lvalue
08/06 19:51, 5F

08/06 22:21, , 6F
lvalue => lvalue reference
08/06 22:21, 6F

08/07 10:07, , 7F
是這樣啊@@才疏學淺,沒有聽過~謝謝h大
08/07 10:07, 7F

08/08 13:04, , 8F
也可以寫成 Bar &&a, rvalue reference
08/08 13:04, 8F
文章代碼(AID): #1I0D9lpq (C_and_CPP)
文章代碼(AID): #1I0D9lpq (C_and_CPP)