c++重载运算符 既然有了=赋值操作符重载,为什么还要调用拷贝构造函数?

既然有了=赋值操作符重载,为什么还要调用拷贝构造函数?复制构造函数用于在未生成对象时构造另一个对象。=赋值运算符重载用于在对象已存在时使用另一个对象构造对象。有必要判断它不是通过给自身赋值来构造的。同

既然有了=赋值操作符重载,为什么还要调用拷贝构造函数?

复制构造函数用于在未生成对象时构造另一个对象。

=赋值运算符重载用于在对象已存在时使用另一个对象构造对象。有必要判断它不是通过给自身赋值来构造的。同时判断部分构件不需要重新构造。

C 赋值运算符重载,为什么要返回引用?

由于赋值操作会更改左值,而这样的运算符不会更改操作数,因此赋值运算符重载会返回一个表达式(a=b)=C)的引用,该表达式会再次写入a=b。归还临时物品是合理的。如果返回引用,在大多数情况下不会出错或导致某些操作数意外修改。然而,这使得表达式(a,b)=C出现,这与约定有点不一致。当然,也可以返回常量引用。

c 类初始化,复制构造函数与运算符重载,在什么时候用?

初始化是第一个实例,没有分配其他实例。它是这样的:a

复制构造在第一个实例上有其他实例赋值。例如,a,B,B=a,它与copy构造函数的编写相匹配,copy构造函数的参数就是这类对象的引用。

赋值函数在实例化后调用,而不是在第一次赋值后调用。例如,a=B意味着赋值函数的调用必须在实例化对象之间。