En C++, el operador de inserción de flujo «<<» se usa para la salida y el operador de extracción «>>» se usa para la entrada.
Debemos saber lo siguiente antes de comenzar a sobrecargar estos operadores.
1) cout es un objeto de la clase ostream y cin es un objeto de la clase istream
2) Estos operadores deben sobrecargarse como una función global. Y si queremos permitirles el acceso a datos privados de los miembros de la clase, debemos hacerlos amigos.
¿Por qué estos operadores deben sobrecargarse como globales?
En la sobrecarga de operadores, si un operador está sobrecargado como miembro, entonces debe ser miembro del objeto en el lado izquierdo del operador. Por ejemplo, considere la declaración «ob1 + ob2» (sean ob1 y ob2 objetos de dos clases diferentes). Para compilar esta declaración, debemos sobrecargar ‘+’ en una clase de ‘ob1’ o hacer que ‘+’ sea una función global.
Los operadores ‘<<‘ y ‘>>’ se denominan como ‘cout << ob1’ y ‘cin >> ob1’. Entonces, si queremos convertirlos en un método miembro, deben convertirse en miembros de las clases ostream e istream, lo cual no es una buena opción la mayor parte del tiempo. Por lo tanto, estos operadores están sobrecargados como funciones globales con dos parámetros, cout y objeto de clase definida por el usuario.
El siguiente es un programa completo de C++ para demostrar la sobrecarga de operadores <>.
CPP
#include <iostream> using namespace std; class Complex { private: int real, imag; public: Complex(int r = 0, int i =0) { real = r; imag = i; } friend ostream & operator << (ostream &out, const Complex &c); friend istream & operator >> (istream &in, Complex &c); }; ostream & operator << (ostream &out, const Complex &c) { out << c.real; out << "+i" << c.imag << endl; return out; } istream & operator >> (istream &in, Complex &c) { cout << "Enter Real Part "; in >> c.real; cout << "Enter Imaginary Part "; in >> c.imag; return in; } int main() { Complex c1; cin >> c1; cout << "The complex object is "; cout << c1; return 0; }
Producción:
Enter Real Part 10 Enter Imaginary Part 20 The complex object is 10+i20
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA