推 dendrobium:暫時物件 09/15 21:36
再請問一下,下面的是錯在哪呢?
(1) const string& ref2 = string("hala");
(2) const vector<int>& ref = vector<int>();
※ 編輯: kevintwo 來自: 140.113.71.110 (09/15 22:13)
→ kevintwo:是我搞錯了,沒有問題 09/15 22:27
→ kevintwo:把warning 誤為error 09/15 22:27
→ kevintwo:謝謝d大了 09/15 22:28
→ dendrobium:最好不要忽略warning...@@a 09/15 22:29
→ kevintwo:warning 是說我沒使用到這個變數,應該沒關係吧? 09/15 22:36
推 QQ29:有人可以解釋 直接傳暫時物件效率會比較高嘛?? 09/15 22:38
→ QQ29:不然這樣寫有什麼好處呢@@"? 09/15 22:39
→ kevintwo:樓上問了我也想問的問題了^^a 09/15 23:07
推 QQ29:不過我測試結果 class A; A a=A(); 和A a();一樣的意思.. 09/15 23:24
→ QQ29:好像一樣 至於用ref 只是為了減少再copy而以嘛? 09/15 23:25
推 dendrobium:A a=A() 並不會產生暫時物件... 編譯器很聰明的 09/16 00:36
推 littleshan:A a(); 是宣告一個 function...這邊很多人會弄錯 09/16 00:41
推 littleshan: const string& ref2 = string("hala"); 是錯誤用法 09/16 00:44
→ littleshan:因為暫時物件會馬上解構 所以你的 ref 會指向垃圾 09/16 00:45
推 QQ29:little大 不會耶 他不會馬上解構 我用VC8測的 09/16 00:59
→ QQ29:他好像和用這樣寫const string& ref2("hala");一樣... 09/16 01:01
推 dendrobium:應該說是不知道哪時候解構 唯一確保的是只在該statemen 09/16 01:01
→ dendrobium:t會在, 09/16 01:02
→ QQ29:但是如果寫const string& ref2("hala");有沒有加ref有差別嘛? 09/16 01:03
→ QQ29:那這樣原波文章 的寫法 他傳到函式用ref接的寫法是錯誤的嘛? 09/16 01:04
→ james732:我常常搞不懂reference的使用時機 orz 09/16 01:11