首页 > 代码库 > 4-1复数类的运算符重载(SDUTOJ2677)

4-1复数类的运算符重载(SDUTOJ2677)

http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2677&cid=1275

题目描述

通过本题目的练习可以掌握成员运算符重载及友元运算符重载

要求定义一个复数类,重载加法和减法运算符以适应对复数运算的要求,重载插入运算符(<<)以方便输出一个复数的要求。

输入

 

要求在主函数中创建对象时初始化对象的值。

输出

 

输出数据共有4行,分别代表ab的值和它们求和、求差后的值

示例输入

示例输出

a=3.2+4.5ib=8.9+5.6ia+b=12.1+10.1ia-b=-5.7-1.1i

提示

#include <iostream>using namespace std;class Complex{public:    Complex(double r,double i)    {        rm=r;        im=i;    }    friend Complex operator +(Complex &c1,Complex &c2);    friend Complex operator -(Complex &c1,Complex &c2);    void display();private:    double rm,im;};void Complex::display(){    cout<<"="<<rm;    if(im>=0) cout<<"+"<<im<<"i"<<endl;    else cout<<im<<"i"<<endl;}Complex operator+(Complex &c1,Complex &c2){    return Complex(c1.rm+c2.rm,c1.im+c2.im);}Complex operator-(Complex &c1,Complex &c2){    return Complex(c1.rm-c2.rm,c1.im-c2.im);}int main(){    Complex c1(3.2,4.5),c2(8.9,5.6);    Complex c3(0,0);    cout<<"a";    c1.display();    cout<<"b";    c2.display();    cout<<"a+b";    c3=c1+c2;    c3.display();    cout<<"a-b";    c3=c1-c2;    c3.display();    return 0;}

 

4-1复数类的运算符重载(SDUTOJ2677)