读书人

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

发布时间: 2014-01-01 18:12:08 作者: rapoo

关于重载=这个运算符,发现书上好像写错了
假如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++要赋值表达式是一个左值。除非你的代码就是自己使用的,否则用户可能会抱怨的。

读书人网 >C++

热点推荐