题目描述
定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1+c2、i+c1、c1+i均合法。(其中i是整数,c1、c2是复数),编程实现求2个复数之和、整数与复数之和。
输入
输入有三行:第1行是第1个复数c1的实部和虚部,以空格分开。第2行是第2个复数c2的实部和虚部,以空格分开。第3行是1个整数i的值。
输出
输出有三行: 第1行是2个复数c1和c2的和,显示方式:实部+虚部i 第2行是第1个复数c1加i的值,显示方式:实部+虚部i 第3行是i加第1个复数c1的值,显示方式:实部+虚部i
示例输入
2 33 510
示例输出
5+8i12+3i12+3i 示例程序
#includeusing namespace std;class Complex{public: Complex operator+(Complex &c2); Complex operator+(int a); friend Complex operator+(int a,Complex &); void show() { cout< <<"+"< <<"i"< >real>>image; }private: int real; int image;};Complex Complex :: operator+(Complex &c2){ Complex c; c.real=real+c2.real; c.image=image+c2.image; return(c);}Complex Complex::operator+(int a){ Complex c; c.real=a+real; c.image=image; return(c);} Complex operator+(int a,Complex &c1){ Complex c; c.real=c1.real+a; c.image=c1.image; return(c);}int main(){ Complex a; a.setdata(); Complex b; b.setdata(); int da; cin>>da; Complex c; c=a+b; c.show(); Complex d; d=a+da; d.show(); Complex e; e=operator+(da,a); e.show(); return 0;}