设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1480|回复: 2
打印 上一主题 下一主题

[求助]重载问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 03:12:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我总是搞不懂运算符重载的问题比如:
#include <iostream>
using namespace std;
class Complex
{public:
friend ostream &operator <<(ostream &,Complex &);
friend istream &operator >>(istream &,Complex &);
private:
double real;
double imag;
};
ostream &operator <<(ostream &output,Complex &c)
{output<<"("<<c.real<<"+"<<c.imag<<"i)";
return output;}
istream &operator >>(istream &input,Complex &c)
{cout<<"input real part and imaginary part of complex number:";
input>>c.real>>c.imag;
return input;}
int main()
{Complex c1,c2;
cin>>c1>>c2; /*这句连着输入两个值是怎么输入的,我知道"cin>>"是函数重载可以理解,但后面又出现个>>c2我就不理解了难道(cin>>c1>>)也是函数的重载?哪位有空,请详细解释一下。谢谢*/
cout<<c1<<endl;
cout<<c2<<endl;
return 0;
}
我输入5 6
它回输出(5+6I)但我搞不懂它的return output和return input分别返回的是什么,返回给谁。
2#
发表于 2009-11-3 03:12:50 | 只看该作者
我知道"cin>>"是函数重载可以理解

istream &operator >>(istream &input,Complex &c)
{cout<<"input real part and imaginary part of complex number:";
input>>c.real>>c.imag;
return input;}
重载的是istream类型和Complex类型之间的操作符>>,而不是重载cin>>
我搞不懂它的return output和return input分别返回的是什么

返回的是输入istream输出ostream类型对象,是为了进行多次操作
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 03:12:51 | 只看该作者
cin是istream这个类的对象
cin>>c1
操作完之后,返回一个istream &,然后是连接下一个重载(cin>>ci)>>
我搞不懂它的return output和return input分别返回的是什么
意味着下一次重载操作时,操作符左面的还是istream &,这样可以连续操作
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 10:24 , Processed in 0.098553 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表