Martes, 23 de mayo de 2006
Se explicará:
Conocimientos previos de:
En este artículo explicaré la sobrecarga del operador de extracción >> (sí, este operador se denomina así, aunque pueda no parecerlo) y el operador insertor <<. Más tarde comentaré aspectos de la herencia, polimorfismo y otros asuntos que suelen resultar difíciles de comprender en un primer momento.
1.- OPERADORES:
- Operador insertor <<:
El prototipo de su sobrecarga es:
ostream &operator <<(ostream &flujo, nombre_de_la_clase objeto)
{
flujo << "Mostramos informacion del objeto: "
<< objeto.info << endl;
return flujo;
}
istream &operator >>(istream &flujo, nombre_de_la_clase objeto)
{
cout << "Introduzca la informacion del objeto: ";
cin >> objeto.info;
cout << endl;
return flujo;
}
class Uno
{
protected:
int x;
public:
Uno(){x=2;}
mostrar(){cout << "CLASE UNO" << endl;}
};
class Dos : public Uno
{
private:
int y;
public:
Dos(){y=3;}
mostrar(){cout << "CLASE DOS" << endl;}
};
int main()
{
Uno objeto1;
objeto1.mostrar() // Mostrará "CLASE UNO"
Dos objeto2;
objeto2.mostrar() // Mostrará "CLASE DOS"
cin.get();
return 0;
}
int main()
{
Dos objeto2;
Uno *puntero = &objeto2;
puntero->mostrar(); // Mostrará "CLASE UNO"
}
class Uno
{
protected:
int x;
public:
Uno(){x=2;}
virtual mostrar(){cout << "CLASE UNO" << endl;}
};
class Tres : public Uno
{
private:
int z;
public:
void mostrar(){cout << "CLASE TRES" << endl;}
};
class Cuatro : virtual public Dos, Tres
{
private:
int w;
public:
void mostrar(){cout << "CLASE CUATRO" << endl;}
};
int main()
{
Cuatro objeto4;
Uno *puntero = &objeto4;
puntero->mostrar(); // Mostrará "CLASE CUATRO"
}
class Uno
{
protected:
int x;
public:
Uno(){x=2;}
mostrar(){cout << "CLASE UNO" << endl;}
};
class Dos : public Uno
{
private:
int y;
public:
Dos(){y=3;}
mostrar()
{
Uno :: mostrar();
cout << "CLASE DOS" << endl;
}
};
int main()
{
Uno objeto1;
objeto1.mostrar() // Mostrará "CLASE UNO"
Dos objeto2;
objeto2.mostrar()
// Mostrará "CLASE UNO"
"CLASE DOS"
cin.get();
return 0;
}
class Persona
{
protected:
char nombre[30];
public:
void mostrar(){cout << "El nombre de la persona es: "
<< nombre << endl;}
};
class Estudiante : public Persona
{
private:
int curso;
public:
void mostrar()
{
cout << "El nombre de la persona es: " <<
nombre << endl;
cout << "Esta en el curso: " << curso << endl;
}
};
class Estudiante : public Persona
{
private:
int curso;
public:
void mostrar()
{
Persona::mostrar();
cout << "Esta en el curso: "
<< curso << endl;
}
};
Por: Miguel Araujo | Programación | Comentarios (3) | Referencias (0)
Muy bueno. Agrego una nota histórica: los operadores << y >> en realidad no tienen ninguna significación particular en C++, ni se relacionan de forma 'implícita' con streams, sino que son una forma interesante de sobrecargar operadores ya existentes. Eso es parte de lo 'bello' de C++ (la economía de elementos intrínsecos).
Por otro lado, si se puede sugerir un tema, sería muy interesante "cómo crear streams derivados o filtros" para por ejemplo comprimir, cifrar, tokenizar contenido.
Saludos y felicitaciones por el material.
Ignacio | 23-05-2006 14:42:11
Gracias por tus felicitaciones Ignacio. El tema que propones resultaría muy interesante, sin embargo, creo que se escapa a mis conocimientos por el momento. Lo tendré en cuenta de todas formas.
Gracias por el apoyo.
Un saludo
Miguel | 24-05-2006 20:20:23
los felicito la información que brindan esta muy padre ademas la complementan con ejemplos y eso es lo que nos sirve a nosotros los estudiantes...Sigan adelante.....
Nelly | 25-01-2008 17:29:49

Tu punto de encuentro GNU/Linux: Manuales, anécdotas, curiosidades, consejos y trucos, ¡sácale partido a tu ordenador!
Diseñado por Studio.st
Online gracias a Bitacoras.com