He probado el siguiente código:<< operador y recursividad
#include <iostream>
using std::cout;
using std::ostream;
class X
{
public:
friend ostream& operator<<(ostream &os, const X& obj)
{
cout << "hehe"; // comment this and infinite loop is gone
return (os << obj);
}
};
int main()
{
X x;
cout << x;
return 0;
}
Cuando compilo & plazo esto, es como se esperaba; un bucle infinito Si elimino la declaración cout
dentro de la función de amigo, la recursión no ocurre. ¿Por que es esto entonces?
Estoy usando MinGW (GNU minimalista para Windows) por cierto. – legends2k
¿Cómo observa que la recursión no ocurre? ¿Termina el programa correctamente? ¿O simplemente no imprime nada y tiene que terminarlo? (Tenga en cuenta que la recursividad de cola puede hacer que no reciba un desbordamiento de pila). –
@litb: Inmediatamente cayó de nuevo a la terminal (no presioné una sola tecla para matar el proceso). – legends2k