gpt4 book ai didi

c++ - 表达式 MyClass a = b + c 是复制初始化吗?

转载 作者:行者123 更新时间:2023-11-27 22:48:22 25 4
gpt4 key购买 nike

我知道像 MyClass a = b 这样的表达式是一个复制初始化,它会调用复制构造函数。

MyClass a = b + c 呢?

我试过了。在visual studio 2015中,表达式似乎不是复制初始化,也不是复制赋值。那是什么?

下面是我测试的代码:

class MyClass
{
public:
MyClass()
{
cout << "default constructor has been called!" << endl;
}
MyClass(const MyClass& cls)
{
cout << "copy constructor has been called!" << endl;
}
MyClass operator+(const MyClass& cls) const
{
cout << "operator + has been called!" << endl;
return MyClass();
}
MyClass& operator=(const MyClass& cls)
{
cout << "operator = has been called!" << endl;
return *this;
}
};

int main()
{
MyClass b, c;
MyClass a = b + c;
return 0;
}

输出是

default constructor has been called!
default constructor has been called!
operator + has been called!
default constructor has been called!

最佳答案

复制构造函数may be elided在这种情况下。

关于c++ - 表达式 MyClass a = b + c 是复制初始化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40701629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com