【发布时间】:2011-01-20 08:40:55
【问题描述】:
对于这个程序
#include <iostream>
using std::cout;
struct C
{
C() { cout << "Default C called!\n"; }
C(const C &rhs) { cout << "CC called!\n"; }
};
const C f()
{
cout << "Entered f()!\n";
return C();
}
int main()
{
C a = f();
C b = a;
return 0;
}
我得到的输出是:
Entered f()!
Default C called!
CC called!
由于f() 按值返回,它应该返回一个临时值。既然T a = x;就是T a(x);,那它不会调用拷贝构造函数来构造a,以临时传入的作为参数吗?
【问题讨论】:
标签: c++ variable-assignment copy-constructor compiler-optimization temporaries