关于网友提出的“ 类内重载operator=,类名假定为CMyData,成员变量有x,y,z”问题疑问,本网通过在网上对“ 类内重载operator=,类名假定为CMyData,成员变量有x,y,z”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 类内重载operator=,类名假定为CMyData,成员变量有x,y,z描述:
classx
一般格式是CMyData& operator=(const CMydata& data)
{
this->x=data.GetX();
………
return *this;
}
我想问可以用void类型吗,最后不返回*this,因为值已经赋进去了啊
解决方案1:
是可以,不过有时会用到连等的情况,所以最好要有个返回值
解决方案2:一改全改,这动静太大了,不是很好
解决方案3: 返回引用作用很多,除了a=b=c; 外,
用到表达式的地方很多,
这些地方,都可以放上 赋值表达式
可以用void类型的
返回引用主要可以进行连续表达式的书写,比如a=b=c;
赋值运算符的本意为“返回左值的引用“
PS:返回该类型的引用,这只是个协议,适用于所有赋值相关运算符,所有内置类型和标准库类型都这样遵循