C ++标头 - 为什么程序包含iostream和ostream?

时间:2011-02-22 07:34:18

标签: c++

我同时看到了一些程序,包括<iostream><ostream>。为什么呢?

感谢您的回复。

3 个答案:

答案 0 :(得分:2)

为什么呢?可能是因为它最初只包括ostream,有人发现它也必须使用输入流。然后,他们只是没有费心去除ostream包含。

或者他们实际上需要具体的cin/cout/cerr流对象,这些对象在iostream中分别定义为istream/ostream中的内容,他们没有意识到iostream拉动在定义这些对象之前,在istreamostream中都有。

在没有询问作者的情况下,很难说,但这些至少有两种可行的可能性。

答案 1 :(得分:2)

有人忘了删除标题。你应该总是只在实现文件中包含你需要的内容,但有时会因为人们懒惰和/或不知道更好而留下东西。

您应该删除不需要的那个。

答案 2 :(得分:2)

<iostream> <istream><ostream>的组合。它仅定义std::cinstd::cout和相关对象。要对std::cout实际执行任何有用的操作,您仍然需要<ostream>。现在,根据C ++规则,某些实现可能实际上包含<ostream>中的<iostream>,但您不应该依赖于此。