`std::cout` 和 `std::ostream` 之间有什么关系?

约翰

在某处看到了下面的代码片段。

#include <iostream>


int main()
{
    std::ostream& os = std::cout;

    os << "thanks a lot" << std::endl;
    return 0;
}

由于上述代码片段运行良好,因此表明它std::cout源自std::ostream. 但我还找不到任何直接参考。

根据文件,它说[强调我的]:

全局对象 std::cout 和 std::wcout控制输出到与标准 C 输出流 stdout 相关联的实现定义类型(派生自 std::streambuf)的流缓冲区。

上面的引文说,std::cout控制输出到一个派生自std::streambuf而不是std::cout派生自的类型std::streambuf

而且我只std::cout在一个名为的文件中找到声明/usr/include/c++/7/iostream

  extern ostream cout;      /// Linked to standard output

我找不到std::cout.

用户229044

ostream是一类。cout是该类的一个实例。

这与class Person {}; Person john;. Person是类,john是该类的一个实例。C++ 标准库恰好提前创建了cout这个特定类 ( ostream) 的实例 ( ),配置为写入标准输出流。

该行std::ostream& os = std::cout;定义了一个名为 的新变量os,它的类型是ostream&,它是对 的引用ostream然后它使其成为对已定义变量的引用cout

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 std::ostream 和 std::cout 的 C++ 日志记录

std :: cout,ostream和其他类型的获取输出流

::std::cout 和 std::cout 有什么不同

std :: cout和std :: wcout有什么区别?

在没有系统调用的线程之间使用std :: istream和std :: ostream(管道)

std :: cout << std :: cin有什么作用?

关于指针,printf()和std :: cout之间的区别

为什么printf和std :: cout的输出不同?

std :: experimental :: ostream_joiner和std :: pair

为什么 std::bind 不能与 std::filesystem::path 和 std::ostream 一起工作?

为什么std :: ostream和char之间的operator <<函数是非成员函数?

C++ 概念和 std::cout

寻求关于 std::cout 和 std::endl 的澄清

为什么std :: ostream无法移动?

cout << std :: ios :: hex有什么作用?

为什么在usleep()延迟之间不打印std :: cout和printf()?

如何移动std :: ostream?

std :: ostream到QDataStream

std :: setw()和ostream :: width()之间的类型不一致

使用 std::cout 时,SerializeToZeroCopyStream 和 SerializeToOstream 有什么区别?

错误: ? 的操作数:具有不同类型的“int”和“std::basic_ostream<char>”

为什么std :: pair <char,std :: string>在std :: copy到ostream时有问题

为什么std :: cout如此耗时?

为什么endl(std :: cout)会编译

为什么std :: cout输出溢出?

为什么std :: cout无法正确显示?

为什么`\ n`刷新std :: cout?

std :: cout带有浮点数

std :: cout是否被缓冲?