赋值运算符可用于将一个对象的值复制到另一个对象而不是使用复制构造函数,那么为什么我们需要复制构造函数呢?
class example
{
int data;
public:
example()
{
}
example(int x)
{
data = x;
}
};
int main()
{
example a(50);
example a(b);
//same can be done with the assignment operator
//b = a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因为在调用复制构造函数时,要复制的对象尚不存在.
赋值运算符将另一个对象的值分配给存在的对象.
成员初始化等设备可以与复制构造函数一起使用,但在分配时不可用.此外,可以const使用复制构造函数创建对象.
此外,赋值运算符通常返回对self的引用.
因此,复制构造函数和赋值运算符可能会使变异对象保持相同的状态,但并不一定是这种情况.