C++重载运算符参数问题
拿双目运算符“+”举例:
如果不是友元函数的话,一般一个参数就够了,但是我看书上说也可以写两个参数,于是我试着这么写了,
class Complex //复数加法
{
public:
Complex()
{
real = 0;
imag = 0;
}
Complex(double r, double i)
{
real = r;
imag = i;
}
Complex operator+ (Complex & c1, Complex& c2); //这里写上2个参数,
void display();
private:
double real;
double imag;
};
Complex Complex::operator +(Complex &c1, Complex &c2)
{
Complex c;
c.real = c1.real+c2.real;
c.imag = c1.imag+c2.imag;
return c;
}
但是出错了,说是 error C2804: 二进制“operator +”的参数太多
有试着Complex operator+ (Complex & c1, Complex& c2);改成
Complex operator+ (int a, Complex& c2);
还是同样的错误,参考书上说是可以的,但是这么看的话果然还是不可以写两个参数吧。
还是希望大家给个准确的答案。
还有一个问题,就是“乘法”和“指针”的重载如何区分?
符号都一样,有什么办法区分吗?