4. Dado que se pueden sobrecargar los operadores, ¿también
se puede sobrecargar cout, cin y cerr?
Hemos
visto que los operadores cout, ciny cerr pueden ser utilizados
con los tipos de variables existentes dentro del lenguaje en sí,
tales como enteros, reales, caracteres ... Además,. como
tu bien sabes los operadores se pueden sobrecargar, por lo tanto,
si que se puede.
A
continuación te mostramos un ejemplo:
Lo
que queremos conseguir es, dada una clase como por ejemplo la
siguiente, que permite trabajar con números complejos,
class
Complejo{
public:
double real;
double imaginario;
Complejo(double,
double);
};
Para
poder imprimir un objeto de esta clase de la siguiente forma:
Complejo z(1,1);
cout << z;
Es
decir, de la misma forma que si fueran los tipos definidos en
el lenguaje. Para ello debemos sobrecargar el operador de inserción
en este caso (para el operador de extracción el procedimiento
es equivalente):
ostream &operator<< (ostream &stream, Complejo
&comp){
stream << comp.real <<"+i*" <<
comp.imaginario <<endl ;
return stream;
}
La
función debe devolver una referencia a un objeto del tipo
ostream, definido en iostream.h