Hay cierta clase de operadores en el conjunto disponible que no pueden ser sobrecargados. La razón general para esta restricción es la seguridad. Si estos operadores fuesen sobrecargables, podría de algún modo arriesgar o romper los mecanismos de seguridad, hacer las cosas mas difíciles o confundir las costumbres existentes.
El operador de selección de miembros operator.
. Actualmente, el punto
tiene significado para cualquier miembro de una clase, pero si se pudiera
sobrecargar, no se podría acceder a miembros de la forma normal; en lugar de
eso debería usar un puntero y la flecha operator->
.
La indirección de punteros a miembros operator.*
por la
misma razón que operator.
.
No hay un operador de potencia. La elección más popular para éste era
operator**
de Fortram, pero provoca casos de análisis
gramatical difíciles. C tampoco tiene un operador de potencia, así que C++ no
parece tener necesidad de uno porque siempre puede realizar una llamada a una
función. Un operador de potencia añadirá una notación adecuada, pero ninguna
nueva funcionalidad a cuenta de una mayor complejidad del compilador.
No hay operadores definidos por el usuario. Esto es, no puede crear nuevos operadores que no existan ya. Una parte del problema es como determinar la precedencia, y otra parte es la falta de necesidad a costa del problema inherente.
No puede cambiar las reglas de precedencia. Son lo suficientemente difíciles de recordar como son sin dejar a la gente jugar con ellas.