operator需要有引用哦
若operator+,c1+c2也就是c1.operator+(c2)可以实现类的加减
1,有变量的加减
class Complex { public: Complex(){real=0; imag=0;} Complex(int r,int m){ real=r; imag=m; } Complex operator+(int &i) { Complex t; t.real=i+real; t.imag=imag; return t; } void input() { cout<<real<<','<<imag<<endl; } private: int real; int imag; }; int main() { Complex c1(1,2),c2; int i=5; //c2=i+c1;//不可以,必须按顺序 c2=c1+i;//可以的!! c1.input(); c2.input(); return 0; }
用成员函数,第一个必须是成员函数,而不是i,c1+i才是正确的
2,友元函数的有变量加减
class Complex
{
public:
Complex(){real=0; imag=0;}
Complex(int r,int m){
real=r; imag=m;
}
friend Complex operator+(int &i,Complex &c)//必须两个
{
return Complex(i+c.real,c.imag);
}
void input()
{
cout<<real<<','<<imag<<endl;
}
private:
int real; int imag;
};
int main()
{
Complex c1(1,2),c2;
int i=5;
c2=i+c1;//可以,必须按顺序的!
//c2=c1+i;//不可以的!
c1.input();
c2.input();
return 0;
}
上面两个是双目的,如果是单目(正,负),括号内不用写参数
如operate+()