首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于满载=这个运算符,发现书上好像写错了

2014-01-01 
关于重载这个运算符,发现书上好像写错了假如Person是一个类,那么对的重载的生命一般是这样的吧:void ope

关于重载=这个运算符,发现书上好像写错了
假如Person是一个类,那么对=的重载的生命一般是这样的吧:

void operator =(const Person& rt_side);

但是我的书上一道作业题是这样写的:

Perons& operator =(const Person& rt_side);

难道这样也可以吗?如果可以,怎么用?带引用的函数值返回类型,我目前只见过返回类型为
istream&和ostream&这两种。
[解决办法]
返回指向自己的引用有什么不可以。
标准的operator=就是这样的
[解决办法]
重载操作符的返回值类型是根据语义来决定的, 你说的istream&和ostream&大概是对>>和<<的重载吧
[解决办法]
两个都可以,void返回值,则等式不可作为右值使用
比如 a=b
a=b=c :错误
fun(a=b):错误

传回引用,上述式子可以


[解决办法]
一般返回Perons& operator =(const Person& rt_side);
但返回void也可以
[解决办法]
内置类型的=也是返回的指向左操作数类型的引用

[解决办法]

引用:
Quote: 引用:

Perons& operator =(const Person& rt_side);
这是正确的.
为了实现链式赋值:a = b = c = d =e;

我倒是倾向返回void
省得出现这种,还得翻资料才知道顺序的表达式。


C/C++要赋值表达式是一个左值。除非你的代码就是自己使用的,否则用户可能会抱怨的。

热点排行