0Pricing
C++ Academy · Lección

Operadores aritméticos y de comparación

Sobrecargue +, -, *, /, ==, < y operadores relacionados siguiendo las prácticas recomendadas.

Operadores aritméticos y de comparación es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.

¿Por qué sobrecargar operadores?

La sobrecarga de operadores permite que sus tipos se comporten como los tipos integrados: v1 + v2 se lee mejor que v1.add(v2). Utilícela para tipos de valor, como vectores, números complejos y dinero.

Definición de operator+

Puede sobrecargar + como miembro o como función libre. Las funciones libres son más simétricas.

struct Vec2 {
    double x, y;
    Vec2 operator+(const Vec2& other) const {
        return {x + other.x, y + other.y};
    }
};

Forma de función libre

Una función libre otorga el mismo tratamiento a ambos operandos, lo que resulta útil cuando la conversión puede aplicarse a cualquiera de los dos lados.

Vec2 operator+(const Vec2& a, const Vec2& b) {
    return {a.x + b.x, a.y + b.y};
}

Operadores de asignación compuesta

Implemente primero += y después construya + sobre él. Este es el modismo canónico.

Vec2& operator+=(const Vec2& other) {
    x += other.x;
    y += other.y;
    return *this;
}

Vec2 operator+(Vec2 lhs, const Vec2& rhs) {
    lhs += rhs;
    return lhs;
}

Operadores unarios

Algunos operadores son unarios: -x, +x, !x, ~x, ++x, --x.

Vec2 operator-() const { return {-x, -y}; }

Incremento de prefijo frente a incremento de sufijo

El prefijo no recibe ningún parámetro; el sufijo recibe un int ficticio para distinguirlo.

Counter& operator++();        // prefix
Counter  operator++(int);     // postfix

Operadores de comparación

Los operadores de comparación devuelven bool. Para mantener la coherencia, lo mejor es utilizar funciones libres.

bool operator==(const Vec2& a, const Vec2& b) {
    return a.x == b.x && a.y == b.y;
}
bool operator!=(const Vec2& a, const Vec2& b) { return !(a == b); }

Menor que para ordenar

Si necesita ordenar su tipo o utilizarlo como clave de un mapa, defina operator<. Los demás operadores relacionales se derivan de él.

Operadores simétricos de tipos mixtos

Para admitir tanto 3 + vec como vec + 3, defina ambos operadores o utilice una función libre que realice la conversión.

Evite comportamientos inesperados

Los operadores sobrecargados deben comportarse de forma intuitiva. No redefina + para que signifique una resta. Respete el significado algebraico convencional del operador.

Operadores que no se pueden sobrecargar

Algunos operadores están fuera de los límites:

  • ?: — ternario
  • . — acceso a miembros (pero -> se puede sobrecargar)
  • :: — resolución de ámbito
  • sizeof, alignof, typeid

Comprobación rápida

¿Cuál es el patrón de implementación canónico para operator+ en un tipo definido por el usuario?

Resumen

La sobrecarga de operadores hace que los tipos definidos por el usuario se comporten de forma natural. Implemente primero la asignación compuesta y después la aritmética básica. Los operadores de comparación funcionan mejor como funciones libres. Respete la semántica convencional: las sorpresas son errores.

Preguntas frecuentes

¿La lección «Operadores aritméticos y de comparación» es gratis?

Sí — el texto completo de «Operadores aritméticos y de comparación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Operadores aritméticos y de comparación»?

Sobrecargue +, -, *, /, ==, < y operadores relacionados siguiendo las prácticas recomendadas. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C++ Academy?

No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Operadores aritméticos y de comparación»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C++ Academy?

Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Operadores aritméticos y de comparación
  2. Operadores de inserción y extracción de streams
  3. Operadores de subíndice y llamada a función
  4. Operador de comparación de tres vías en C++20
← Volver a C++ Academy