c++中'cout<<cout'和'cout<<&cout'的区别?
Difference between 'cout<<cout' and 'cout<<&cout' in c++?
我想知道 cout<<cout
和 cout<<&cout
在 c++
中的实际区别?在我的编译器中 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
以达到相同的目的。
我想知道 cout<<cout
和 cout<<&cout
在 c++
中的实际区别?在我的编译器中 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
以达到相同的目的。