我很好奇 std::cout 是否有返回值,因为当我这样做时:
cout << cout << "";
打印一些十六进制代码。这个打印值的含义是什么?
因为操作数为cout << cout
是用户定义的类型,表达式实际上是函数调用。编译器必须找到最好的operator<<
与操作数匹配,在本例中都是类型std::ostream
.
有许多候选运算符重载可供选择,但我将按照通常的重载解析过程描述最终选择的一个。
std::ostream
有一个转换运算符,允许转换为void*
。这用于启用作为布尔条件测试流的状态(即,它允许if (cout)
上班)。
右侧操作数表达式cout
被隐式转换为void const*
使用此转换运算符,则operator<<
过载需要一个ostream&
and a void const*
被调用来写入该指针值。
请注意,实际值由ostream
to void*
转换未指定。该规范仅要求如果流处于错误状态,则返回空指针,否则返回非空指针。
The operator<<
流插入的重载确实有一个返回值:它们返回作为操作数提供的流。这就是允许链接插入操作(对于输入流,使用提取操作>>
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)