C++ 默认构造函数调用与复制构造函数调用
如果我创建如下三个对象:C++ 默认构造函数调用与复制构造函数调用,c++,constructor,copy,C++,Constructor,Copy,如果我创建如下三个对象: A myA; // line 1 A myA2 = A(); // line 2 A myA3 = myA; // line 3 我想在第二行中调用了复制构造函数。但是如果我尝试这个(VisualStudio),第1行和第2行只调用默认构造函数。当然,第3行调用复制构造函数。因此,1号线和2号线似乎没有区别。两者都调用默认构造函数。那么为什么我有不同的语法呢 顺便说一下,我的testclass A的形式如下: class A { public: A() {
A myA; // line 1
A myA2 = A(); // line 2
A myA3 = myA; // line 3
我想在第二行中调用了复制构造函数。但是如果我尝试这个(VisualStudio),第1行和第2行只调用默认构造函数。当然,第3行调用复制构造函数。因此,1号线和2号线似乎没有区别。两者都调用默认构造函数。那么为什么我有不同的语法呢
顺便说一下,我的testclass A的形式如下:
class A {
public:
A() { cout << "default ctor is called..." << endl; }
A(const A &obj) { cout << "copy ctor is called..." << endl; }
};
A类{
公众:
A(){cout复制构造函数调用根据进行了优化;这是从C++17开始保证的
在初始化过程中,如果初始值设定项表达式是prvalue,并且源类型的cv非限定版本与目标类型的类是同一个类,则使用初始值设定项表达式初始化目标对象
请参阅:。查找“复制省略”