2015-02-05 77 views
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?

+1

请看这里的答案http://stackoverflow.com/a/16731868/451600 – 2015-02-05 20:58:48

+1

也许,或者可能不是。为了支持所谓的“返回值优化”(和“命名返回值优化”),该标准允许编译器优化大多数这样的副本,因此即使(例如)您有一个副本构造函数有副作用,不要指望发生的那些副作用。 – 2015-02-05 21:08:40

回答

0

如果返回的对象在复制初始化之前被破坏,那么您将复制aa被破坏的对象。这是奇怪的。

返回值优化也可以发生,所以不需要复制返回的对象并将其破坏。