0
假设函数按值返回类A的对象。通过值返回函数的对象并将其用于赋值/拷贝c'tor C++
A f();
假设我们有更高版本的任务/副本c'tor:
a = f(); //a is of type A - assignment
A aa = f(); // copy c'tor
是委派/ initiallization后调用返回的对象的德TOR?
假设函数按值返回类A的对象。通过值返回函数的对象并将其用于赋值/拷贝c'tor C++
A f();
假设我们有更高版本的任务/副本c'tor:
a = f(); //a is of type A - assignment
A aa = f(); // copy c'tor
是委派/ initiallization后调用返回的对象的德TOR?
如果返回的对象在复制初始化之前被破坏,那么您将复制aa
被破坏的对象。这是奇怪的。
返回值优化也可以发生,所以不需要复制返回的对象并将其破坏。
请看这里的答案http://stackoverflow.com/a/16731868/451600 – 2015-02-05 20:58:48
也许,或者可能不是。为了支持所谓的“返回值优化”(和“命名返回值优化”),该标准允许编译器优化大多数这样的副本,因此即使(例如)您有一个副本构造函数有副作用,不要指望发生的那些副作用。 – 2015-02-05 21:08:40