加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:35:27 所属栏目:百科 来源:网络整理
导读:如果std :: cout有一个返回值,我很好奇,因为当我这样做: cout cout ""; 打印一些六代码.这个印刷价值的意思是什么? 解决方法 因为cout的操作数 cout是用户定义的类型,表达式实际上是一个函数调用.编译器必须找到最佳运算符这与操作数相匹配,在这种情况下,
如果std :: cout有一个返回值,我很好奇,因为当我这样做:
cout << cout << "";

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读