看板 EE_DSnP 關於我們 聯絡資訊
在寫作業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
yangjiunru:這是Return value optimization 10/14 15:29
yangjiunru:en.wikipedia.org/wiki/Return_value_optimization 10/14 15:29
yangjiunru:g++的話可以在compile的時候加參數關掉這個功能 10/14 15:34
yangjiunru:g++ -fno-elide-constructors -o xxx xxx.cpp 10/14 15:35
occqoo:所以這次作業正確的話要用上面那個方式compile嘍? 10/14 16:04