在C++中,运算符和函数是等价的,它和函数一样可以通过重载的方式来灵活地解决各种实际问题。
运算符重载的格式
运算符重载有两种形式,一是重载为成员函数形式,二是重载为友元(或普通的类外)函数形式。
以Complex复数类的 “+” 运算符为例,重载为成员函数的形式为:
class Complex{
int real,image;
public:
Complex(int r=0,int i=0):real(r),image(i){};
Complex operator+(const Complex& c);//成员函数形式重载"+"
};
Complex Complex::operator+(const Complex& c){ //具体实现
return Complex(real+c.real,image+c.image);
}
重载为友元函数的形式为:
class Complex{
int real,image;
public:
Complex(int r=0,int i=0):real(r),image(i){};
friend Complex operator+(const Complex& c,const Complex& c2);//友元函数形式重载"+"
};
Complex operator+(const Complex& c,const Complex& c2){ //具体实现
return Complex(c.real+c2.real,c.image+c2.image);
}
运算符重载比函数重载多了一个operator关键字,重载为成员函数时有一个参数为类对象本身,而重载为外部函数(友元或者普通函数)时需要将所有参数写出来。
返回类型 operator 运算符(参数列表){
}
或者重载为成员函数形式:
返回类型 所在类的类名::operator 运算符(参数列表){
}
其中参数列表根据重载的运算符定,例如二元运算符重载为友元函数时需要两个参数(两个操作数