cout中的cout << cout和cout <<和cout有什么区别?

bys*_*xia 8 c++ cout

这可能是一个初学者的问题,了解cout如何工作可能是关键.如果有人可以联系到一个好的解释,那就太好了. cout<<coutcout<<&cout在linux x86机器上打印以4分隔的十六进制值.

MSN*_*MSN 16

cout << cout相当于cout << cout.operator void *().这是在C++ 11之前用来确定iostream是否处于失败状态的习惯用法,并在其中实现std::ios_base; 它通常返回的地址static_cast<std::ios_base *>(&cout).

cout << &cout打印出地址cout.

由于std::ios_base是虚拟基类cout,因此它可能不一定是连续的cout.这就是它打印不同地址的原因.


R. *_*des 5

cout << cout正在使用内置转换void*为布尔测试目的.对于某些无趣的原因,您的实现使用std::cout对象中的4个字节的地址.在C++ 11中,这个转换被删除了,这不应该编译.

cout << &cout正在打印std::cout对象的地址.