以下代码生成输出:
copy constructor: i = 2
我不明白为什么复制构造函数不会从f1()
返回。我正在使用Visual C ++ V12。我认为它可能是返回值优化,但无论我是编译Debug还是Release,我都会获得相同的输出。
class C
{
public:
C(int i) { i_ = i; }
C(C const &rhs)
{
i_ = rhs.i_;
std::printf("copy constructor: i = %i\n", i_);
}
int i_;
};
C f1()
{
return C(1);
}
C f2()
{
C c(2);
return c;
}
int main()
{
C c1 = f1();
C c2 = f2();
return 0;
}