I tried the following code:
#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;
}
When I compile & run this, it's as expected; an infinite loop. If I remove the cout
statement inside the friend function, the recursion doesn't happen. Why is it so?
gdb
and it says aSIGSEGV
:) Thanks for the comment, probably you should write it as an answer! It's crashing by a stack overflow!! Yay! – Obbard