习题 10.1 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普通函数。编写程序,求两个复数之和。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/navicheung/article/details/82698352

C++程序设计(第三版) 谭浩强 习题10.1 个人设计

习题 10.1 定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普通函数。编写程序,求两个复数之和。

代码块:

#include <iostream>
using namespace std;
class Complex
{
public:
    Complex(){real=0; imag=0;}                     //默认构造函数
    Complex(double r, double i){real=r; imag=i;}   //构造函数
    static Complex get(Complex &, Complex &);      //定义静态成员函数get
    void display();                                //定义成员函数display
private:
    double real;
    double imag;
};
//成员函数get,可以访问Complex类的私有变量
Complex Complex::get(Complex &c1, Complex &c2)
{
    return Complex(c1.real+c2.real, c1.imag+c2.imag);
}
//重载运算符+函数,通过调用Complex类的公有函数get,达到访问Complex类私有变量的目的
Complex operator+(Complex &c1, Complex &c2)
{
    return Complex::get(c1, c2);
}
//display函数
void Complex::display()
{
    cout<<"("<<real;
    if (imag>=0) cout<<"+";
    cout<<imag<<"i)"<<endl;
}
int main()
{
    Complex c1(2.5, 3), c2(4, -7), c3;     //定义Complex类的对象c1,c2,c3
    c3=c1+c2;
    c3.display();
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/navicheung/article/details/82698352