C ++中的cout(标准输出)

时间:2010-11-28 17:32:04

标签: c++

// my first program in C++

#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

cout是一个对象吗? 如果是这样,它在哪里被实例化? (我没有看到“new ....”)

之类的东西

6 个答案:

答案 0 :(得分:7)

cout是在&lt; iostream&gt;。

中声明的全局对象

顺便说一句,与Java或C#不同,您不需要new来创建对象。例如,这将起作用:

std::string str; // creates a new std::string object called "str"

答案 1 :(得分:2)

当前的C ++标准规定(27.3 / 2):

  

[...]构造对象,和   协会成立于   在第一次之前或期间的某个时间   时间是一个阶级的对象   ios_base::Init已构建,并在   主体之前的任何情况   开始执行。对象是   在节目中没有被摧毁   执行。

来自([iostream.objects] / 2:

  

如果翻译单位包括   <iostream>或明确构建   一个ios_base::Init对象,这些流   物体应在之前建造   动态初始化非本地   稍后定义的对象   翻译单位。“

在C ++中,翻译单元只不过是文件的编译器术语和包含在该文件中的任何/所有标题。

答案 2 :(得分:1)

是的,cout是一个对象。它在你背后的<iostream>头文件中实例化(与cincerr等其他流媒体对象一起):)

答案 3 :(得分:1)

是的,它在程序启动时由C ++运行时库初始化。

答案 4 :(得分:1)

cout是一个对象。它在程序启动期间由实现实例化。这意味着它可能发生在CRT DLL或静态链接的代码中。

答案 5 :(得分:0)

Cout是您刚刚在标题IOSTREAM中实例化的库的一部分。