微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – std :: cout是否具有返回值?

如果std :: cout有一个返回值,我很好奇,因为当我这样做:
cout << cout << "";

打印一些六代码.这个印刷价值的意思是什么?

解决方法

因为cout的操作数< cout是用户定义的类型,表达式实际上是一个函数调用.编译器必须找到最佳运算符<<这与操作数相匹配,在这种情况下,它们都是类型std :: ostream. 有许多候选运算符重载可供选择,但是我将根据通常的重载解析过程描述最终被选中的那个. std :: ostream有一个转换操作符,允许转换为void *.这用于使流测试状态为布尔状态(即允许if(cout)工作). 使用该转换运算符将右侧的操作数表达式cout隐式转换为void const *,然后运算符<<需要ostream&并调用一个void const *来写入此指针值. 请注意,ostream到void *转换产生的实际值是未指定的.该规范仅强制如果流处于不良状态,则返回空指针,否则返回非空指针. 操作者<流插入的重载确实具有返回值:它们返回作为操作数提供的流.这是允许链接插入操作(以及对于输入流,使用>>)的提取操作).

原文地址:https://www.jb51.cc/c/114272.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐