6-1 CComplex复数类+友元函数重载

6-1 CComplex复数类+友元函数重载
分数 15
作者 谢颂华
单位 武汉理工大学
定义一个复数类CComplex,重载运算符“+”,使之能用于复数的加法运算。
参加运算的两个运算符可以都是类对象,也可以其中有一个是整数,顺序任意。例如,c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2为复数)。
编写程序,分别求两个复数之和、整数和复数之和。

CComplex类定义如下:

class CComplex
{  public:
      CComplex() {real=0; imag=0;}
      CComplex(double r, double i) ;
      CComplex(const CComplex &p) ;
      CComplex operator + (CComplex &c);
      friend CComplex operator + (const double &i, CComplex &c);
      friend CComplex operator + (CComplex &c, const double &i );
      void display(){cout<<"("<<real<<","<<imag<<")"<<endl;}
   private:
      double real;
      double imag;
}; 
 /* 请在这里填写答案 */

裁判测试程序样例:

#include 
using namespace std;
int main()
{
    double x1,y1,x2,y2,z;
    cin>>x1>>y1;
    cin>>x2>>y2;
    cin>>z;
    CComplex c1(x1,y1),c2(x2,y2),c3;
    c3=c1+c2;
    c3.display();
    c3=c1+z;
    c3.display();
    c3=z+c2;
    c3.display();
    return 0;
}

输入样例:
输入两个复数的实部和虚部,输入一个加数

4 5
6 8
9

输出样例:
依次三次加运算后得到的复数的值。

(10,13)
(13,5)
(15,8)

答案

CComplex::CComplex(double r, double i) : real(r), imag(i) {}

CComplex::CComplex(const CComplex& p) : real(p.real), imag(p.imag) {}

CComplex CComplex::operator+(CComplex& c) {
    return CComplex(real + c.real, imag + c.imag);
}

CComplex operator+(const double& i, CComplex& c) {
    return CComplex(i + c.real, c.imag);
}

CComplex operator+(CComplex& c, const double& i) {
    return CComplex(c.real + i, c.imag);
}

你可能感兴趣的:(算法,c++)