How std::cout works [duplicate]

Question:

I accidentally found:

cout << cout;

The output is some address. What does this address mean, and why is it shown?
I am looking this question.

Answer:

Because ostream overload operator void*(), and that's the closes match for the call to operator <<, the result of the cast (void*)cout is printed. Which in your case is that address. Remember that cout is an object.

Basically the call translates to:

cout.operator<<((void*)cout);

原文地址:https://www.cnblogs.com/vigorz/p/10499118.html