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

前端之家收集整理的这篇文章主要介绍了c – std :: cout是否具有返回值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果std :: cout有一个返回值,我很好奇,因为当我这样做:
cout << cout << "";

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

解决方法

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

猜你在找的C&C++相关文章