我明白,当我们定义一个类的时候,类的复制构造函数是必要的,因为三种状态的规则。我还注意到,复制构造函数的参数通常const
如下代码所示:
class ABC {
public:
int a;
int b;
ABC(const ABC &other)
{
a = other.a;
b = other.b;
}
}
我的问题是如果复制构造函数的参数不是 const 会发生什么:
class ABC
{
public:
int a;
int b;
ABC(ABC &other)
{
a = other.a;
b = other.b;
}
}
我知道在某些情况下,如果复制构造函数的参数是 const 那么第二个实现会失败。此外,如果复制构造函数的参数是 const,则要复制的对象在此过程中不会更改其内容。但是,我确实注意到有些人仍然使用第二个实现而不是第一个。是否有任何理由首选第二种实现?