作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題Re: [問題] operator overloading
時間Tue Oct 20 10:59:56 2009
※ 引述《littleshan (我要加入劍道社!)》之銘言:
: ※ 引述《ACMTino (哈哈哈)》之銘言:
: : 標題: [問題] operator overloading
: : 時間: Tue Oct 20 01:55:03 2009
: : List Test::GetList()
: : {
: : return m_oList;
: : }
: : Test oTest;
: : List oList = oTest.GetList();
: 當你這樣寫的時候
: 實際上是呼叫一次 copy-assignment (oTest.GetList)
請問l大說的copy assignment是發生在return 這個時候嘛?
那為啥不是呼叫copy constructor而是呼叫opt =??
還有請教RVO 全名是return value object嘛? google打查不太到...
: 以及一次 copy-constructor
: 不過前面那個 copy-assignment 被 RVO 消掉了
: 所以沒呼叫到 List::operator=
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.207.187
→ adrianshum:你google "C++ RVO" 就會找到了 10/20 11:04
→ QQ29:不過我覺得是觸發copy constructor耶 我測試一下是呼叫cstr 10/20 11:06
→ QQ29:我是看這網頁 他是說省下copy cstr@@ 10/20 11:13
→ QQ29:所以RVO=return value optimization嘛?? 10/20 11:34
推 legendmtg:More Effective C++裡有講到 10/20 11:38
推 holymars:原po寫的明明就是inline function... 10/20 11:41
→ QQ29:???請問哪裡有inline.... 10/20 11:49
→ QQ29:您是說l大把他寫在.h所以 inline嘛 可是我是問他該呼叫copy 10/20 11:50
→ QQ29:constructor而非 operator =吧?? 10/20 11:50
推 legendmtg:定義在class裡就是inline啦~~ 10/20 11:56