Disponible la versión 6 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.