¿Cuál de los siguientes operadores debería preferirse para sobrecargar como una función global en lugar de un método miembro?
(A) Postfijo ++
(B) Operador de comparación
(C) Operador de inserción <<
(D) Prefijo++
Respuesta: (C)
Explicación: cout es un objeto de la clase ostream que es una clase definida por el compilador.
Cuando hacemos «cout << obj» donde obj es un objeto de nuestra clase, el compilador primero busca una función de operador en ostream, luego busca una función global. Una forma de sobrecargar el operador de inserción es modificar la clase ostream que
puede no ser una buena idea Entonces hacemos un método global A continuación se muestra un ejemplo.
#include <iostream> using namespace std; class Complex { private: int real; int imag; public: Complex(int r = 0, int i =0) { real = r; imag = i; } friend ostream & operator << (ostream &out, const Complex &c); }; ostream & operator << (ostream &out, const Complex &c) { out << c.real; out << "+i" << c.imag; return out; } int main() { Complex c1(10, 15); cout << c1; return 0; }
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