为什么表达式't foo = T()'没有复制初始化

时间:2017-03-24 20:32:41

标签: c++ visual-c++ constructor initialization copy-constructor

我有以下类定义:

class T
{
    string text;

public:
    T() : text{} 
    {
        // ...
    }

    T(T &other)
    {
        // ...
    }
};

以下初始化:

T cp_f = T();

根据我对对象初始化的理解,这是一个value (default)初始化(T()),然后是copy初始化(T cp_f = ...)。但是,当我执行此代码时,永远不会调用复制构造函数。起初我假设编译器正在优化冗余临时,但即使关闭优化,行为仍然存在。

为什么这个表达式不会导致复制初始化?

PS:我使用VC ++编译器版本19.10.25017 for x86 /

0 个答案:

没有答案