std::cout 是否有返回值
Does std::cout have a return value?
我很好奇std::cout是否有返回值,因为当我这样做时:
cout << cout << "";
打印了一些六代码。这个印刷值的含义是什么?
由于cout << cout
的操作数是用户定义的类型,因此表达式实际上是函数调用。 编译器必须找到与操作数匹配的最佳operator<<
,在本例中,操作数均为 std::ostream
类型。
可供选择,但我只描述最终被选中的运算符重载,遵循通常的重载解决过程。
std::ostream
有一个转换运算符,允许转换为void*
。 这用于将流的状态作为布尔条件进行测试(即,它允许if (cout)
工作)。
转换运算符将右侧操作数表达式cout
隐式转换为void const*
,然后调用采用ostream&
和void const*
的operator<<
重载来写入此指针值。
请注意,未指定ostream
到void*
转换所产生的实际值。 该规范仅要求如果流处于错误状态,则返回空指针,否则返回非空指针。
用于流插入的operator<<
重载确实具有返回值:它们返回作为操作数提供的流。 这就是允许链接插入操作(对于输入流,使用 >>
的提取操作)。
cout
没有 返回值。 cout
是类型 ostream
的对象。 operator <<
有一个返回值,它返回对cout
的引用。
请参阅 http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/以供参考。
唯一匹配的签名是:
ostream& operator<<(ostream&operator<<
成员的指针。詹姆斯回答中的那个。 :)
我相信这将是
"被打印到的ostream对象的地址
相关文章:
- 从python中调用C++函数并获取返回值
- 为什么模板类中的对象不能返回值
- 返回值优化:显式移动还是隐式
- lock_guard是否保护返回值
- 调用CreateProcess()并获取字符串的返回值
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 查找 GCD:并非所有控制路径都返回值
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 如何从 std::thread 返回值
- 将返回值从 exe 传递到 bat,并将其传递给 C# 中的进程
- 方法错误"not all control paths return a value"和方法不返回值
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 对fread的返回值感到困惑
- 程序不向函数返回值
- 如何在另一个函数中使用返回值作为参数?
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 函数不返回值,但 cout 显示它
- std::cout 是否有返回值