注册 登录
编程论坛 C++教室

c++中重载运算符的问题

slfzzhm 发布于 2010-10-19 22:47, 438 次点击
c++中可以重载运算符,
重载+的时候声明为 :类名 operator +();
而重载提取运算符的时候声明为 (类名) istream &operator>>( );
而重载++的时候声明为:(数据类型)例如 int operator++ ( );
当中的区别到底在哪里呢???为什么提取运算符要多一个&,而重载++的时候前面是数据类型int呢????
3 回复
#2
pangding2010-10-19 23:45
你应该把它看成:
istream& operator>> ()
表示它返回的是一个引用。

这就看你程序的逻辑本来是要返回什么了。比如一般逻辑上 operator++ 也应该返回引用。
这有时有一些固定写法,看到了想想为什么,基本懂了之后,自己写也会那么写的。
#3
zgxyz20082010-10-23 11:44
&表示函数返回的是一个引用类型,因为cout或cin总是返回iostream对象,所以你才能连续输出很多值:cout<<x<<y<<z...。
#4
2010-10-23 13:20
这里类型返回什么  主要看你实现的功能  

比如你重载+号    如m = a + b;   加完之后a 和 b 肯定不会被修改吧???

如果是这样你就得返回临时对象了   如 istream operator+(const istream& obj);

重载=   因为=赋值运算  返回其左值的特性  所以一般返回类型都用引用  如 istream& operator+(const istream& obj);
1