新微赢技术网

标题: [求助]重载问题 [打印本页]

作者: 无民    时间: 2009-11-3 03:12
标题: [求助]重载问题
我总是搞不懂运算符重载的问题比如:
#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分别返回的是什么,返回给谁。
作者: 欧阳风    时间: 2009-11-3 03:12
我知道"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类型对象,是为了进行多次操作
作者: 未来的回忆    时间: 2009-11-3 03:12
cin是istream这个类的对象
cin>>c1
操作完之后,返回一个istream &,然后是连接下一个重载(cin>>ci)>>
我搞不懂它的return output和return input分别返回的是什么
意味着下一次重载操作时,操作符左面的还是istream &,这样可以连续操作




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2