C++中类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符。类型强制转换运算符是单目运算符,只能重载为成员函数。
经过重载后,(类型名)对象这个表达式等价于对象。operator类型名()。
class Complex
{
double real, imag;
public:
Complex (double r = 0, double i = 0): real(r), imag(i){};
operator double() {return real;}
}
运算符重载的注意事项
在 C++ 中进行运算符重载时,有以下问题需要注意:
- 重载后运算符的含义应该符合原有用法习惯。例如重载+运算符,完成的功能就应该类似于做加法,在重载的+运算符中做减法是不合适的。此外,重载应尽量保留运算符原有的特性。
- C++ 规定,运算符重载不改变运算符的优先级。
- 以下运算符不能被重载:.、.*、::、? :、sizeof。
- 重载运算符()、[]、->、或者赋值运算符=时,只能将它们重载为成员函数,不能重载为全局函数。



