一、
运算符重载的实质就是函数重载或函数多态。
运算符重载是一种形式的C++多态。目的在于让人能够用同名的函数来完成不同的基本操作。要重载运算符,需要使用被称为运算符函数的特殊函数形式,运算符函数形式:
<返回类型说明符> operator <运算符符号>(<参数表>)
{
函数体
}
二、
重载运算符有两种方式,即:
重载为类的成员函数重载为类的非成员函数。
重载为类的非成员函数的时候:
通常我们都将其声明为友元函数,因为大多数时候重载运算符要访问类的私有数据,(当然也可以设置为非友元非类的成员函数。但是非友元又不是类的成员函数是没有办法直接访问类的私有数据的),如果不声明为类的友元函数,而是通过在此函数中调用类的公有函数来访问私有数据会降低性能。所以一般都会设置为类的友元函数,这样我们就可以在此非成员函数中访问类中的数据了。
三、
函数重载注意事项:
①使用运算符不能违法运算符原来的句法规则。如不能将% 重载为一个操作数。
②不能修改运算符原先的优先级。
③只有C++预定义的操作符集中的操作符才可以被重载,例如+,-,*,/,%,^…等等,但是都不改变它们之间的操作个数和优先级;以及一些内置类型的操作符不能改变,比如int类型的+。
不能进行重载的运算符:成员运算符,作用域运算符,条件运算符,sizeof运算符,typeid(一个RTTI运算符),const_cast、dynamic_cast、reinterpret_cast、static_cast强制类型转换运算符