我想知道cout<<cout
中cout<<&cout
和c++
之间的实际差异?在我的编译器cout<<cout
中返回0x477864
&amp; cout<<&cout
随时返回0x477860
。它显示它们之间有1位差异。这些有什么意义?
答案 0 :(得分:8)
执行此操作时:
cout << cout;
您依赖于流隐式转换为void*
。使用此值(pre-c ++ 11)来测试流的状态。未指定实际值是什么,如果流处于失败状态,则只需要为NULL,否则为非NULL。也许它会返回对象成员的地址,但它并不重要,并且是实现定义的。
执行此操作时:
cout << &cout;
即获取cout
的实际地址。
请注意,在C ++ 11及更高版本中,第一个cout << cout;
将不再编译,因为隐式转换为void*
不再存在。而是明确转换为bool
以实现相同目的。