→ nowar100:g() const 是代表你跟編譯器說g()裡面不會去改物件的內容 01/07 23:49
→ nowar100:return的type要看int g()前面的type 也就是int 01/07 23:49
→ QQ29:可是這樣compile會錯 因為data他說是const 01/08 00:00
→ QQ29:VC 編的 01/08 00:01
→ uest:要不要檢查一下程式? 不應該會錯..因為g() return的是分身.. 01/08 00:06
→ QQ29:我眼殘了 我return int& 不過如果是int& 不過該怎麼解釋呢 01/08 00:14
→ QQ29:怎樣解釋說data是const&呢 01/08 00:14
→ QQ29:const int 打錯 01/08 00:14
→ uest:int &是reference to data, Foo::g() const就已經說了不給你 01/08 00:15
→ uest:用這個method改東西 當然不能return data 的 reference出去 01/08 00:17
→ uest:不然加那個const在g()的後面就沒意義拉~~~您說是吧 01/08 00:18
→ uest:也就是..const int & Foo::g() const { return data; } -> ok 01/08 00:21
→ QQ29:恩 只是我不解的是 修飾this跟 他member有啥關係 01/08 01:23
→ QQ29:compile error是說她變成const int了 01/08 01:23
→ QQ29:那個const 到底是修飾所有的member還是把this變成 01/08 01:24
→ QQ29:const* type this; 還是兩者根本一樣? 01/08 01:24
→ uest:那個const是把this從type * const 變成const type * const 01/08 02:18
→ uest:所以你不能去動他的member 01/08 02:18
→ QQ29:其實我好像之前都想基本型態 const int * 是不能修改指到的 01/08 02:33
→ QQ29:int變數值 現在搞到自訂型態的const 就不知道這const該怎想 01/08 02:34
→ QQ29:想成指到這type裡面的member都不可修改 可以嗎 01/08 02:35
→ QQ29:我現在把它想成this底下的member都加上const修飾好了 01/08 02:37
→ uest:const type * const是說this是一個const pointer 指到一個 01/08 02:45
→ uest:const instance of type `type` 如果你改了那個instance的 01/08 02:47
→ uest:member 那麼 這個instance怎麼還會是const呢? 01/08 02:48