/** * Javier Abellán. 21 Octubre 2003 * * Programa de ejemplo de sobrecarga de operadores en C++ * Sobrecarga operadores de la clase y operadores globales. */ #ifndef _COMPLEJO_H #define _COMPLEJO_H #include /** * Un número complejo. * Sobrecarga el operador + para poder sumar otras clases ComplejoC, arrays de dos * doubles y doubles sueltos. */ class ComplejoC { public: /** Constructor por defecto. Rellena los atributos x e y a 0.0 */ ComplejoC (); /** Constructor con array de doubles. Mete el primer double del array en * x y el segundo en y */ ComplejoC (const double origen[]); /** Constructor copia. Copia los atributos del ComplejoC recibido en los internos * de la clase. */ ComplejoC (const ComplejoC &origen); /** Constructor con un double. Lo pone en la parte real x */ ComplejoC (double valor); /** Operador igual para array de doubles. Mete el primer double del array * en x y el segundo en y */ ComplejoC &operator = (const double origen[]); /** Operador igual para otro ComplejoC. Copia los atributos del * ComplejoC recibido. */ ComplejoC &operator = (const ComplejoC &origen); /** Operador suma para un double. Suma el double recibido en x */ ComplejoC operator + (double sum) const; /** Operador suma para un array de doubles. Suma el primer double del array en * x y el segundo en y */ ComplejoC operator + (const double sum[]); /** Operador suma para otro ComplejoC. Suma los atributos del ComplejoC recibido * con los internos */ ComplejoC operator + (const ComplejoC &sum) const; /** cast a double. Devuelve el módulo */ operator double (); /** Devuelve X */ double dameX() const; /** Devuelve Y */ double dameY() const; /** Devuelve X */ double tomaX(double valor); /** Devuelve Y */ double tomaY(double valor); private: /** Parte real del complejo */ double x; /** Parte imaginaria del complejo */ double y; }; /*************************************************************************** * FUNCIONES EXTERNAS A LA CLASE ***************************************************************************/ /** Sobrecarga del operador suma global para sumar un double con un ComplejoC */ ComplejoC operator + (double k, const ComplejoC &origen); /** Sobrecarga del operador suma global para sumar un array de doubles y un ComplejoC */ ComplejoC operator + (const double sum1[], const ComplejoC &sum2); /** Sobrecarga del operador << global para que cout "sepa" escribir un ComplejoC */ ostream &operator << (ostream &salida, const ComplejoC &origen); /** Sobrecarga del operador << global para que cout "sepa" escribir un array de doubles */ ostream &operator << (ostream &salida, const double origen[] ); #endif