据题意,不用友元函数,且其为非成员函数, 那么, 运算符的重载则不能直接调用数据成员, 成员函数做为对外的链接口, 则需要在运算符重载中用到成员函数来调用数据成员
#include<iostream>
using namespace std;
class complex
{
public:
complex(){real=0;imag=0;}
complex(double r,double i){real=r;imag=i;}
double get_real();
double get_imag();
void display();
private:
double real;
double imag;
};
double complex::get_real()
{return real;}
double complex::get_imag()
{return imag;}
void complex::display()
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
complex operator+(complex &c1,complex &c2)
{
return complex(c1.get_real()+c2.get_real(),c1.get_imag()+c2.get_imag());
}
int main()
{
complex c1(2,9),c2(4,-3),c3;
c3=c1+c2;
cout<<"c3=";
c3.display();
return 0;
}
<img src="https://img-blog.csdn.net/20150426111411302?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTWFvX3phaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />