Looking for c++ Answers? Try Ask4KnowledgeBase
Looking for c++ Keywords? Try Ask4Keywords

C++Sobrecarga del operador


Introducción

En C ++, es posible definir operadores como + y -> para tipos definidos por el usuario. Por ejemplo, el encabezado <string> define un operador + para concatenar cadenas. Esto se hace definiendo una función de operador utilizando la palabra clave del operator .

Observaciones

Los operadores para los tipos incorporados no se pueden cambiar, los operadores solo se pueden sobrecargar para los tipos definidos por el usuario. Es decir, al menos uno de los operandos debe ser de un tipo definido por el usuario.

Los siguientes operadores no pueden ser sobrecargados:

  • El miembro de acceso o el operador de "punto" .
  • El puntero al operador de acceso miembro .*
  • El operador de resolución de alcance, ::
  • El operador condicional ternario, ?:
  • dynamic_cast , static_cast , reinterpret_cast , const_cast , typeid , sizeof , alignof y noexcept
  • Las directivas de preprocesamiento, # y ## , que se ejecutan antes de que esté disponible cualquier tipo de información.

Hay algunos operadores que no debería (99,98% de las veces) de sobrecarga:

  • && y || (Prefiero, en cambio, usar la conversión implícita a bool )
  • ,
  • La dirección del operador (unario & )

¿Por qué? Porque sobrecargan a los operadores que otro programador nunca esperaría, lo que resulta en un comportamiento diferente al anticipado.

Por ejemplo, el usuario definió && y || sobrecargas de estos operadores pierden su evaluación de cortocircuito y pierden sus propiedades de secuenciación especiales (C ++ 17) , la cuestión de la secuencia también se aplica a , sobrecargas de operadores.

Sobrecarga del operador Ejemplos relacionados