看板 C_and_CPP 關於我們 聯絡資訊
今天無意間發現我不太能解釋這個現象 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
tobygameac:傳非變數,編譯會自動生成一個const variable來存 08/06 18:48
tobygameac:所以傳56就被當成是傳一個const 08/06 18:48
legendmtg:你原本是const to non-const當然不會過 08/06 18:49
QQ29:原本不會過是因為non const 而不是rvalue嗎? 08/06 19:44
hilorrk:rvalue 可轉成 const lvalue,不能轉成 non-const lvalue 08/06 19:51
hilorrk:lvalue => lvalue reference 08/06 22:21
QQ29:是這樣啊@@才疏學淺,沒有聽過~謝謝h大 08/07 10:07
steve1012:也可以寫成 Bar &&a, rvalue reference 08/08 13:04