我在某处看到了下面的代码片段。
#include <iostream>
int main()
{
std::ostream& os = std::cout;
os << "thanks a lot" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
由于上述代码片段运行良好,因此表明它std::cout源自std::ostream. 但我还找不到任何直接的参考。
根据文件,其中说[强调我的]:
全局对象 std::cout 和 std::wcout控制输出到实现定义类型(派生自 std::streambuf)的流缓冲区,与标准 C 输出流 stdout 关联。
上面的引用说控制输出到派生自其他std::cout类型而不是派生自 的类型。std::streambufstd::coutstd::streambuf
std::cout我只在名为 的文件中找到 的声明/usr/include/c++/7/iostream:
extern ostream cout; /// Linked to standard output
Run Code Online (Sandbox Code Playgroud)
我找不到 的实现std::cout。
ostream是一个类。cout是该类的一个实例。
这与 没有什么不同class Person {}; Person john;。Person是类,john是该类的实例。coutC++ 标准库恰好提前创建了该特定类 () 的实例 ( ostream),并配置为写入标准输出流。
该行std::ostream& os = std::cout;定义了一个名为 的新变量os,其类型为ostream&,是对 的引用ostream。然后它使其成为对已定义变量的引用cout。
| 归档时间: |
|
| 查看次数: |
2419 次 |
| 最近记录: |