C++第四章运算符重载习题-1:非成员、非友元普通函数复数加法

#include<iostream>

using namespace std;

class Complex
{
public:
    Complex(){real=0,imag=0;}
    Complex(double r ,double i):real(r),imag(i){}
    double getReal(){return real;}
    double getImag(){return imag;}
    void display();
private:
    double real;
    double imag;
};

void Complex::display()
{
    cout<<real;
    if(this->getImag()>=0)cout<<"+";
    cout<<imag<<"i"<<endl;
}

Complex operator+(Complex &c1,Complex &c2)
{
    return Complex(c1.getReal()+c2.getReal(),c2.getImag() +c1.getImag());
}

int main()
{
    Complex c1(3,6),c2(4,10),c3;
    c3=c1+c2;
    c3.display();
}

开始一直在Complex类里写的方法为:

Complex operator + (Complex&,Complex&);

然后一直报错: 'Complex Complex::operator+(Complex&, Complex&)' must take either zero or one argument|

后来才意识到:重载二进制+运算符  有一个是它自己本身就是可以用this->去引用的。所以形参里只能有0个或者1个。不然就写友元函数。因为本来就是  一般情况下:双目运算符函数重载为友元函数,单目运算符重载为成员函数。

猜你喜欢

转载自blog.csdn.net/n20164206199/article/details/85229005
今日推荐