c++中'cout<<cout'和'cout<<&cout'的区别?

Difference between 'cout<<cout' and 'cout<<&cout' in c++?

我想知道 cout<<coutcout<<&coutc++ 中的实际区别?在我的编译器中 cout<<cout returns 0x477864 & cout<<&cout returns 0x477860 在任何 time.It 显示它有 1 位数字之间的差异 them.What这些有什么意义吗?

当你这样做时:

cout << cout;

您依赖流向 void* 的隐式转换。此值用于 (pre-c++11) 用于测试流的状态。未指定实际值是什么,如果流处于失败状态,它只需要为 NULL,否则为非 NULL。也许它正在返回对象成员的地址,但这并不重要,并且是实现定义的。

当你这样做时:

cout << &cout;

也就是得到cout的实际地址。

请注意,在 C++11 及更高版本中,第一个 cout << cout; 将不再编译,因为到 void* 的隐式转换不再存在。相反,有一个显式转换为 bool 以达到相同的目的。