c++ 构造函数重定义 + 运算符重载、流重载

来源:互联网 发布:js数据写入excel文件 编辑:程序博客网 时间:2024/05/16 19:04
#include<iostream>using namespace std;class Complex{public://构造函数的重载Complex(){real=0;imag=0;}//默认的初始化Complex(double r){real=r;imag=0;}//缺省的初始化Complex(double r,double i){real=r;imag=i;}//完全的初始化friend Complex operator + (Complex c1,Complex c2);//运算符重定义friend ostream& operator << (ostream&,Complex&);//输出流重定义friend istream& operator >> (istream&,Complex&);//输入流重定义void display(Complex &);private:double real;double imag;};Complex operator + (Complex c1,Complex c2){return Complex(c1.real+c2.real,c1.imag+c2.imag);}ostream& operator << (ostream& output,Complex& c){output <<"(";if(c.real!=0){cout<<c.real;if(c.imag>0)cout<<"+"<<c.imag<<"i)";else if(c.imag<0)cout<<c.imag<<"i)";else cout<<")";}else{if(c.imag!=0)cout<<c.imag<<"i)";else cout<<0;}return output;}istream& operator >> (istream& input,Complex& C){cout<<"Please input the Complex number:";input>>C.real>>C.imag;return input;}void Complex::display(Complex &c1)//复数显示{cout<<"The Complex number is:"<<c1<<endl;}int main(){Complex c1(1,2),c2(2,1),c3,c4;c1.display(c1);c1.display(c2);c1.display(c1+c2);c3=c1+2.5;c1.display(c3);c1.display(2+c2);cin>>c4;cout<<c4<<endl;return 0;}

0 0