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);

posted @ 2015-05-08 03:40  vigorpush  阅读(233)  评论(0编辑  收藏  举报