我有以下类定义:
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 /