Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


Sobrecarga de operadores binarios: ejemplo

§1  Sinopsis

El ejemplo muestra un posible diseño de la clase Vector, diseñada para representar los vectores en un espacio de dos dimensiones, a la que se le han sobrecargado los operadores de asignación y relacionales, a fin de conseguir un álgebra lo más parecida posible a la utilizada con los vectores en los textos de física elemental.

class Vector {               // Una clase Vector
  public:
  float x, y;
  Vector& operator= (const Vector& v) {  // operador de asignación
    x = v.x;  y = v.y;
    return *this;
  }
  bool operator== (Vector& v) {          // operador de igualdad ==
    return ((v.x == x) && (v.y == y))? true: false;
  }
  bool operator!= (Vector& v) {          // operador de desigualdad !=
    return !(*this == v);
  }
  bool operator> (Vector& v) {           // operador mayor-que
    return ((x * x + y * y) > (v.x * v.x + v.y * v.y))? true: false;
  }
  bool operator< (Vector& v) {           // operador menor-que
    return ((x * x + y * y) < (v.x * v.x + v.y * v.y))? true: false;
  }
  bool operator>= (Vector& v) {          // operador igual-o-mayor-que
    return ((x * x + y * y) >= (v.x * v.x + v.y * v.y))? true: false;
  }
  bool operator<= (Vector& v) {          // operador igual-o-menor-que
    return ((x * x + y * y) <= (v.x * v.x + v.y * v.y))? true: false;
  }
  Vector(int i = 0, int j = 0) {         // constructor por defecto
    x = i; y = j;
  }
  Vector(const Vector& v) {             // constructor-copia
    x = v.x; y = v.y;
  }
};

Comentario

El ejemplo es el resultado de un diseño básico, que incluye solo el operador de asignación = ( 4.9.18a), al que se han añadido los operaciones relacionales ( 4.9.18b1).

Observe que, dado que son pequeñas, todas las funciones se han declarado inline ( 4.11.2a). Es decir, pertenecientes a la clase y definidas dentro del cuerpo de esta.