未从函数返回调用复制构造函数

时间:2019-05-18 03:11:17

标签: c++ copy-constructor

我希望以下代码能两次打印copy called。一次用于创建f2,一次用于创建f3。但是由于某种原因,它只能打印一次。为什么是这样?是否正在进行某种类型的优化?如果是这样,有没有办法在没有编译器标志的情况下将其禁用?

struct Foo
{
    Foo() = default;
    Foo(Foo const&) { std::cout << "copy called" << std::endl; }
};

Foo test()
{
    Foo f1;
    Foo f2(f1);

    return f2;
}

int main()
{
    Foo f3(test());
}

0 个答案:

没有答案