看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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:http://tinyurl.com/ygf5row 10/20 11:12
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