为什么没有调用复制构造函数?

时间:2016-06-24 18:56:36

标签: c++ visual-c++

以下代码生成输出:

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;
}

0 个答案:

没有答案