9.5.5 对运算符重载的补充说明
运算符重载可以改变运算符内置的语义,如以友元函数形式定义的加操作符。
complex operator+(const complex&C1,const complex&C2) { return complex(C1.real-C2.real,C1.imag-C2.imag); }
明明是加操作符,但函数内进行的却是减法运算,这是合乎语法规则的,不过却有悖于人们的常规思维,会引起不必要的混乱。因此,除非有特别的理由,尽量使重载的运算符与其内置的、广为接受的语义保持一致。
此外,还要注意各运算符之间的关联,例如与下列几个指针相关的操作符。
[]、*、&、->
编译器对这些操作符的解释为一种“等价”关系,因此,如果对其中一个进行了重载,其他对应的操作符也应被重载,使等价操作符完成等价的功能。