Re: [問題] Copy Constructor
哇哇! 這個 compiler optimize 好大!! 我事先沒有預料到...
的確,剛剛用 debugger trace 了一下 copy constructor 果真沒有被呼叫到,
其實不只這個地方,還有其他 return by object 的地方都被 optimize 掉了...
雖然這不是我題目的本意 ---
我本來是想要測試大家在 object copy 時是否有注意到
pointer type data member 的處理,
但是這樣恐怕很多地方都測不到了...
但是題目都出了,
好吧!
大家可以用正常 (沒有參數) 的 g++ compile 就好了,
只是如果你要測試一下你的 copy constructor,
可以將 main() 改一下來測試,
比方說改一下 m1 的輸入:
Matrix m4 = inputMatrix();
Matrix m1 = m4;
我再考慮一下是否在批改時要用別的 main() 來測...
※ 引述《occqoo (小歐)》之銘言:
: 標題: [問題] Copy Constructor
: 時間: Thu Oct 14 14:49:52 2010
:
: 在寫作業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
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.11.13
※ 編輯: ric2k1 來自: 123.193.11.13 (10/14 20:59)
討論串 (同標題文章)