C++ 复制构造函数中的类型
可能重复:C++ 复制构造函数中的类型,c++,C++,可能重复: 嗨,当我调用或初始化上述类的对象时,你能告诉我它们之间的区别吗 A a(b); A a=b; a=b; 前两行调用复制构造函数,因为正在构造对象。 最后一行将调用equals运算符来执行赋值。前两行调用复制构造函数,因为正在构造对象。 最后一行将调用equals运算符来执行赋值。因为您的类没有任何显式的复制构造函数,所以上述所有语句都会导致浅复制 如果声明了复制构造函数并重载了=运算符,则 A(b)和A=b将导致调用复制构造函数和 a=b将导致调用=重载运算符 阅读以获得更多理解
嗨,当我调用或初始化上述类的对象时,你能告诉我它们之间的区别吗
A a(b);
A a=b;
a=b;
前两行调用复制构造函数,因为正在构造对象。
最后一行将调用equals运算符来执行赋值。前两行调用复制构造函数,因为正在构造对象。
最后一行将调用equals运算符来执行赋值。因为您的类没有任何显式的复制构造函数,所以上述所有语句都会导致浅复制 如果声明了复制构造函数并重载了=运算符,则 A(b)和A=b将导致调用复制构造函数和 a=b将导致调用=重载运算符
阅读以获得更多理解,因为您的类没有任何显式的复制构造函数,所有上述语句都会导致浅复制
A a(b);
A a = b;
如果声明了复制构造函数并重载了=运算符,则
A(b)和A=b将导致调用复制构造函数和
a=b将导致调用=重载运算符
阅读以获得更多的理解
A a(b);
A a = b;
它们使用隐式生成的
这一个使用,并且它不是初始化,因为它不创建对象:它只是给现有对象一个新值
复制构造函数将有一个签名,如
A(const A&);
和赋值运算符
A& operator=(const A&);
由于您的类不提供这些,编译器将合成它们,并只复制数据成员
它们使用隐式生成的
这一个使用,并且它不是初始化,因为它不创建对象:它只是给现有对象一个新值
复制构造函数将有一个签名,如
A(const A&);
和赋值运算符
A& operator=(const A&);
由于您的类不提供这些,编译器将合成它们,并只复制数据成员