等号重载返回对象本身的意义

来源:8-4 运算符重载

duye123456

2021-07-30

void Complex::operator=(const Complex& x){
_real = x._real;
_image = x._image;
return;
}
老师,这个等号重载这么写也可以,为什么要有返回值,我理解是“=”左边的对象调用了=这个函数,把x里面成员变量的值赋给了该对象的成员变量,既然已经赋值完成为何还要再把该对象返回出去,是为了方便后续操作吗?

写回答

1回答

quickzhao

2021-07-30

根据《Effective C++》条款15,当定义自己的赋值运算符时,必须返回赋值运算符左边参数的引用,*this。如果不这样做,就会导致不能连续赋值,或导致调用时的隐式类型转换不能进行,或两种情况同时发生。

2
1
duye123456
谢谢老师
2021-07-30
共1条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3949 学习 · 1107 问题

查看课程