定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2位复数)。编程序,分别求两个复数之和、整数和复数之和。
#include <iostream>
using namespace std;
class Complex{
public:
Complex(){real=0;image=0;}
Complex(double r,double i):real(r),image(i){}
void display();
Complex operator+(Complex &c1);
Complex operator+(int&i);
friend Complex operator+(int&i,Complex&c);
private:
double real;
double image;
};
void Complex::display(){
cout<<"("<<real<<","<<image<<"i)"<<endl;
}
Complex Complex :: operator+(Complex &c2){
return Complex(real+c2.real,image+c2.image);
}
Complex Complex::operator+(int&i){
return Complex(real+i,image);
}
Complex operator+(int&i,Complex &c){//必须加这个函数 不然c5=i+c1运行错误
return Complex(i+c.real,c.image);//好像是因为成员函数第一个必须是类的成员数据,所以我们用友元函数
}
int main(){
Complex c1(3,4),c2(6,7),c3,c4,c5;
int i=2;
c3=c1+c2;
c4=c1+i;
c5=i+c1;
cout<<"c3=";
c3.display();
cout<<"c4=";
c4.display();
cout<<"c5=";
c5.display();
return 0;
}