Re: [問題] operator overloading

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2009/10/20 10:59), 編輯推噓3(308)
留言11則, 4人參與, 最新討論串6/6 (看更多)
※ 引述《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

10/20 11:04, , 1F
你google "C++ RVO" 就會找到了
10/20 11:04, 1F

10/20 11:06, , 2F
不過我覺得是觸發copy constructor耶 我測試一下是呼叫cstr
10/20 11:06, 2F

10/20 11:12, , 3F

10/20 11:13, , 4F
我是看這網頁 他是說省下copy cstr@@
10/20 11:13, 4F

10/20 11:34, , 5F
所以RVO=return value optimization嘛??
10/20 11:34, 5F

10/20 11:38, , 6F
More Effective C++裡有講到
10/20 11:38, 6F

10/20 11:41, , 7F
原po寫的明明就是inline function...
10/20 11:41, 7F

10/20 11:49, , 8F
???請問哪裡有inline....
10/20 11:49, 8F

10/20 11:50, , 9F
您是說l大把他寫在.h所以 inline嘛 可是我是問他該呼叫copy
10/20 11:50, 9F

10/20 11:50, , 10F
constructor而非 operator =吧??
10/20 11:50, 10F

10/20 11:56, , 11F
定義在class裡就是inline啦~~
10/20 11:56, 11F
文章代碼(AID): #1AtIUlZB (C_and_CPP)
文章代碼(AID): #1AtIUlZB (C_and_CPP)