class complex
{
public:
complex(int r, int v):_real(r), _virtual(v){}
complex(){}
complex& operator +(complex&,complex&);
complex& operator *(complex&,complex&);
complex& operator =(complex&);
void display(void);
private:
int _real;
int _virtual;
};
//就是对复数进行加乘法,不使用容器
改称
friend complex& operator +(complex&,complex&);
friend complex& operator *(complex&,complex&);
加一个参数就好了,事实上就是两个数之间的运算了,因为还有一个this变量。
当然你也可以通过友元来做,那样就可以加两个参数!
Complex operator+( Complex &other );
二目运算符只有一个参数,一目的没参数,你写那么多干嘛
class complex
{
public:
complex(int r, int v):_real(r), _virtual(v){}
complex(){}
friend complex& operator +(complex&,complex&);
complex& operator *(complex&);
complex& operator =(complex&);
void display(void);
private:
int _real;
int _virtual;
};
给你盖了一下,你对比看一下,就应该知道了。成员函数冲在操作符、第一个参数是本身,所以二元的只需要一个参数
,如果是友元重载,则几元操作符就需要几个参数了
如果是成员函数,this会作为隐式的参数,因此二员操作符重载只须显示地给出一个就可以了
complex& operator +(complex&,complex&);
..........
complex& operator +(complex&);
friend complex operator +(complex&,complex&);
用成员函数重载操作符时,参数个数为操作数个数-1
改成友元函数呗