#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个。不然就写友元函数。因为本来就是 一般情况下:双目运算符函数重载为友元函数,单目运算符重载为成员函数。