首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c++中,cout<<cout和cout<<&cout有什么不同?

在c++中,cout<<cout和cout<<&cout有什么不同?
EN

Stack Overflow用户
提问于 2011-09-21 01:17:52
回答 5查看 3.2K关注 0票数 8

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-21 01:24:59

cout << cout等同于cout << cout.operator void *()。这是在C++11之前用来确定iostream是否处于故障状态的惯用法,在std::ios_base中实现;它通常返回static_cast<std::ios_base *>(&cout)的地址。

cout << &cout打印出cout的地址。

由于std::ios_basecout的虚拟基类,因此它不一定与cout相邻。这就是为什么它打印一个不同的地址。

票数 16
EN

Stack Overflow用户

发布于 2011-09-21 01:24:15

cout << cout使用内置到void*的转换,该转换用于布尔测试目的。出于一些不起眼的原因,您的实现使用的地址是std::cout对象中的4个字节。在C++11中,此转换已被删除,并且不应进行编译。

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

票数 5
EN

Stack Overflow用户

发布于 2011-09-21 01:23:10

cout << &cout正在将cout的地址传递给cout

cout << cout使用其operator void*打印将cout隐式转换为void*指针的值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7489069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档