[問題] Copy Constructor

看板EE_DSnP作者 (小歐)時間13年前 (2010/10/14 14:49), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/3 (看更多)
在寫作業1.2 P2的時候愈到了一點小問題 本來想說檢查一下自己的code 就用cout大法(老師不要殺我)在Matrix的copy constuctor中 加上了cout<<"Matrix copy"; 結果在執行hw1.2.p2.cpp中的 Matrix m1 = InputMatrix() 發現並沒有Matrix copy這行輸出 用ddd檢查發現copy constructor真的沒有被呼叫到 跟上課時講得好像有點不同(還是我搞錯了) 進一步檢查發現destructor也一樣沒有被呼叫過 稍微Google了一下 好像有人說g++在這種function return的情況下會自動作優化 並不會真的去呼叫我們寫的copy constructor 不知道版上有沒有強者知道實際狀況 不然好像自己寫得code都沒有被執行的樣子 感謝大家或老師幫忙解答嘍~ p.s 2732篇都沒有人回答我QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.244.187

10/14 15:29, , 1F
這是Return value optimization
10/14 15:29, 1F

10/14 15:29, , 2F
en.wikipedia.org/wiki/Return_value_optimization
10/14 15:29, 2F

10/14 15:34, , 3F
g++的話可以在compile的時候加參數關掉這個功能
10/14 15:34, 3F

10/14 15:35, , 4F
g++ -fno-elide-constructors -o xxx xxx.cpp
10/14 15:35, 4F

10/14 16:04, , 5F
所以這次作業正確的話要用上面那個方式compile嘍?
10/14 16:04, 5F
文章代碼(AID): #1CjgWIQe (EE_DSnP)
文章代碼(AID): #1CjgWIQe (EE_DSnP)