更喜欢哪个,复制构造函数或对象赋值?

Kin*_*ing 1 c++ copy-constructor

有一个A类,有2个对象A1和A2.

现在要将A2的成员值分配给A1,我可以使用简单的A1 = A2,或者使用复制构造函数,如: -

A (A &A2)
{
   this.m = A2.m;
   this.n = A2.n;
}
Run Code Online (Sandbox Code Playgroud)

所以,我想知道哪一个更好,哪个选项适合,或者它们之间真的有什么区别?

Jos*_*eld 11

首先,你需要这样做this->m,因为它this是一个指针.

其次,复制构造函数通常应该采用const A&.

第三,如果需要实现复制构造函数,则可能还需要实现赋值运算符.在这种情况下,我不确定你是否真的需要实现(只是默认它们).

第四,复制构造函数和赋值运算符用于不同的情况:

A A1 = A2; // Copy constructor
A1 = A2; // Assignment
Run Code Online (Sandbox Code Playgroud)

你应该提供两者.

第五,您可以使用成员初始化列表更好地编写构造函数:

A(const A& A2) 
  : m(A2.m), n(A2.n)
{ }
Run Code Online (Sandbox Code Playgroud)