12.3.5 不能重载的运算符
在可用的运算符集合里存在一些不能重载的运算符。这样限制的通常原因是出于对安全的考虑:如果这些运算符也可以被重载,将会造成危害或破坏安全机制,使得事情变得困难或混淆现有的习惯。
1)成员选择operator.。点在类中对任何成员都有一定的意义。但如果允许它重载,就不能用普通的方法访问成员,只能用指针和指针operator->访问。
2)成员指针间接引用operator.*,因为与operator.同样的原因而不能重载。
3)没有求幂运算符。通常的选择是来自Fotran语言的operator**,但这出现了难以分析的问题。C没有求幂运算符,C++似乎也不需要,因为这可以通过函数调用来实现。求幂运算符增加了使用的方便,但没有增加新的语言功能,反而为编译器增加了复杂性。
4)不存在用户定义的运算符,即不能编写目前运算符集合中没有的运算符。不能这样做的部分原因是难以决定其优先级,另一部分原因是没有必要增加麻烦。
5)不能改变优先级规则。否则人们很难记住它们。