'cout&lt; <cout'和=“”'cout <<&cout'=“”in =“”c ++?=“”

时间:2015-05-26 14:49:53

标签: c++ cout

=“”

我想知道cout<<coutcout<<&coutc++之间的实际差异?在我的编译器cout<<cout中返回0x477864&amp; cout<<&cout随时返回0x477860。它显示它们之间有1位差异。这些有什么意义?

1 个答案:

答案 0 :(得分:8)

执行此操作时:

cout << cout;

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

执行此操作时:

cout << &cout;

即获取cout的实际地址。

请注意,在C ++ 11及更高版本中,第一个cout << cout;将不再编译,因为隐式转换为void*不再存在。而是明确转换为bool以实现相同目的。