作者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
1F:→ adrianshum:你google "C++ RVO" 就会找到了 10/20 11:04
2F:→ QQ29:不过我觉得是触发copy constructor耶 我测试一下是呼叫cstr 10/20 11:06
4F:→ QQ29:我是看这网页 他是说省下copy cstr@@ 10/20 11:13
5F:→ QQ29:所以RVO=return value optimization嘛?? 10/20 11:34
6F:推 legendmtg:More Effective C++里有讲到 10/20 11:38
7F:推 holymars:原po写的明明就是inline function... 10/20 11:41
8F:→ QQ29:???请问哪里有inline.... 10/20 11:49
9F:→ QQ29:您是说l大把他写在.h所以 inline嘛 可是我是问他该呼叫copy 10/20 11:50
10F:→ QQ29:constructor而非 operator =吧?? 10/20 11:50
11F:推 legendmtg:定义在class里就是inline啦~~ 10/20 11:56