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

5
// my first program in C++

#include <iostream>
using namespace std;

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

cout是一个对象吗?如果是,那它在哪里被实例化了呢?(我没有看到类似于"new ...."的东西)


你写了“count”。把它看作“c-out”(控制台输出)会更有帮助。同样地,还有一个“c-in”(控制台输入)。 - mpen
6个回答

7

cout是在<iostream>中声明的全局对象。

顺便说一下,与Java或C#不同,你不需要使用new来创建一个对象。例如,这个可以工作:

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

1
它在<iostream>中声明,但不一定在那里定义。 - Yakov Galka

2
当前的C++标准规范(27.3/2)指出:
[...]这些对象在一个类对象ios_base::Init首次被构造之前或期间进行构造,并且在任何情况下,在main函数执行之前建立关联。这些对象在程序执行期间不会被销毁。
引用自(iostream.objects/2):
如果一个翻译单元包括或显式构造一个ios_base::Init对象,则这些流对象应在该翻译单元中后定义的非本地对象动态初始化之前构造。
在C++术语中,翻译单元仅是编译器术语,用于表示文件及其中包含的所有头文件。

一个文件,以及包含在该文件中的任何/所有头文件。 - Billy ONeal

1

是的,cout 是一个对象。它在 <iostream> 头文件中被实例化(与一些其他流对象一起,如 cincerr):)


1

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


1

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


0

Cout是你在头文件IOSTREAM中实例化的库的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接