面向对象程序设计上机练习十(运算符重载)

来源:互联网 发布:js初始化加载 编辑:程序博客网 时间:2024/06/12 17:54

Problem Description

定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1+c2、i+c1、c1+i均合法。(其中i是整数,c1、c2是复数),编程实现求2个复数之和、整数与复数之和。
Input

输入有三行:第1行是第1个复数c1的实部和虚部,以空格分开。第2行是第2个复数c2的实部和虚部,以空格分开。第3行是1个整数i的值。
Output

输出有三行:
第1行是2个复数c1和c2的和,显示方式:实部+虚部i
第2行是第1个复数c1加i的值,显示方式:实部+虚部i
第3行是i加第1个复数c1的值,显示方式:实部+虚部i
Example Input

2 3
3 5
10
Example Output

5+8i
12+3i
12+3i

#include<cstdio>#include<iostream>using namespace std;class Complex{private:    int real, image;public:    Complex()    {        real = 0;        image = 0;    }    Complex(int r, int i)    {        real = r;        image = i;    }    Complex operator+(Complex &c2)    {        Complex C;        C.real = real + c2.real;        C.image = image + c2.image;        return C;    }    Complex operator+(int x)    {        Complex D;        D.real = real + x;        D.image = image;        return D;    }    friend Complex operator+(int r, Complex &c3);    void display()    {        cout << real << "+" << image << "i" << endl;    }};Complex operator+(int r, Complex &c3){    Complex E;    E.real = c3.real + r;    E.image = c3.image;    return E;}int main(){    int a, b, c, d, e;    cin >> a >> b;    cin >> c >> d;    cin >> e;    Complex c1(a, b);    Complex c2(c, d);    Complex c3;    c3 = c1 + c2;    c3.display();    c3 = c1 + e;    c3.display();    c3 = e + c1;    c3.display();}
阅读全文
0 0