8.4 运算符重载
运算符重载是非常重要的功能,因为它能够使用像+、-、*这样的标准C++(www.cppentry.com)运算符,来处理自定义数据类型的对象。该功能允许编写重新定义特定运算符的函数,从而使该运算符处理类对象时执行特定的动作。例如,可以重新定义<运算符,从而使该运算符用于前面看到的CBox类对象时,如果第一个实参的体积比第二个小,就返回true。
运算符重载功能不允许使用新的运算符,也不允许改变运算符的优先级,因此运算符的重载版本在计算表达式的值时,优先级与原来的基本运算符相同。运算符的优先级表可以在本书第2章和MSDN库中找到。
虽然我们不能重载所有运算符,但限制不是特别严格。下面给出了不能重载的运算操作符。
|
:: 作用域解析运算符
|
|
|
: 条件运算符
|
|
|
. 直接成员选择操作符
|
|
|
sizeof sizeof操作符
|
|
|
.* 对指向类成员的指针解除引用的操作符
|
|
任何其他运算符都是可以重载的,这给予我们相当大的灵活性。显然,确保标准运算符的重载版本与原来的正常用途一致,或者至少在操作上相当直观,是正确的想法。如果为某个类重载的+运算符执行使类对象相乘的操作,这可能就不是明智的做法。理解运算符重载机制如何工作的最好方法是完成一个示例,因此下面为CBox类实现刚才提到的小于运算符<。