ostream & operator<<()这个函数是什么意思啊?解释尽量详细一点,谢谢

华科网安学院-慕冬亮 2012-08-03 07:13:27
#include<iostream>
using namespace std;

class Complex{
public:
Complex(double r=0.0,double i=0.0):real(r),img(i){}
friend Complex operator+(const Complex &c1,const Complex &c2);
friend Complex operator-(const Complex &c1,const Complex &c2);
friend ostream & operator<<(ostream &out,const Complex &c);
private:
double real;
double img;
};

Complex operator+(const Complex &c1,const Complex &c2){
return Complex(c1.real+c2.real,c1.img+c2.img);
}

Complex operator-(const Complex &c1,const Complex &c2){
return Complex(c1.real-c2.real,c1.img-c2.img);
}

ostream & operator<<(ostream &out,const Complex &c){
out<<"("<<c.real<<","<<c.img<<")";
return out;
}

int main()
{
Complex c1(5,4),c2(2,10),c3;
cout<<"c1="<<c1<<endl;
cout<<"c2="<<c2<<endl;

c3=c1+c2;
cout<<"c3=c1+c2="<<c3<<endl;

c3=c1-c2;
cout<<"c3=c1-c2="<<c3<<endl;

system("pause");
return 0;
}
...全文
3955 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hy1989111 2012-08-05
  • 打赏
  • 举报
回复
重载运算符
mountain310 2012-08-04
  • 打赏
  • 举报
回复 3
你定义了一个类 复数,这个类可以进行加减运算 加减运算是类的两个友元,通过重载+ -实现的
你想通过<< 这个操作符直接输出你所创建的类的实例(对象),而<< 操作符属于iostream库,这个库无法识别你自己定义的类,因而需要对操作符<< 重载。
重载<< 函数返回类型是一个流的引用, 第一个参数是流,第二个参数是以引用传递的方式的一个类的实例(并且只能对这个参数读操作)
楼主看看书就能解决的问题
443692487 2012-08-04
  • 打赏
  • 举报
回复
很简单的重载函数啊。。。不知道你是不是被ostream &神马的吓到了。。
静c心 2012-08-03
  • 打赏
  • 举报
回复
重载操作符<< 返回一个io流
shilin380066670 2012-08-03
  • 打赏
  • 举报
回复
重载操作符<<
使其可以简便的输出你的类
caiyunl 2012-08-03
  • 打赏
  • 举报
回复 2
重载操作符 <<
调用时
Complex c(5,4);
cout << c;
相当与 operator<<(cout, c);

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧