std::cout 是否有返回值

Does std::cout have a return value?

本文关键字:返回值 cout std 是否      更新时间:2023-10-16

我很好奇std::cout是否有返回值,因为当我这样做时:

cout << cout << "";

打印了一些六代码。这个印刷值的含义是什么?

由于cout << cout的操作数是用户定义的类型,因此表达式实际上是函数调用。 编译器必须找到与操作数匹配的最佳operator<<,在本例中,操作数均为 std::ostream 类型。

有许多候选运算符重载

可供选择,但我只描述最终被选中的运算符重载,遵循通常的重载解决过程。

std::ostream有一个转换运算符,允许转换为void*。 这用于将流的状态作为布尔条件进行测试(即,它允许if (cout)工作)。

使用此

转换运算符将右侧操作数表达式cout隐式转换为void const*,然后调用采用ostream&void const*operator<<重载来写入此指针值。

请注意,未指定ostreamvoid*转换所产生的实际值。 该规范仅要求如果流处于错误状态,则返回空指针,否则返回非空指针。


用于流插入的operator<<重载确实具有返回值:它们返回作为操作数提供的流。 这就是允许链接插入操作(对于输入流,使用 >> 的提取操作)。

cout没有

返回值cout 是类型 ostream 的对象。 operator <<有一个返回值,它返回对cout的引用。

请参阅 http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/以供参考。

唯一匹配的签名是:

ostream& operator<<(ostream&

( *pf )(ostream&));

因此,它返回指向operator<<成员的指针。

詹姆斯回答中的那个。 :)

我相信这将是

"被打印到的ostream对象的地址