我同时看到了一些程序,包括<iostream>
和<ostream>
。为什么呢?
感谢您的回复。
答案 0 :(得分:2)
为什么呢?可能是因为它最初只包括ostream
,有人发现它也必须使用输入流。然后,他们只是没有费心去除ostream
包含。
或者他们实际上需要具体的cin/cout/cerr
流对象,这些对象在iostream
中分别定义为istream/ostream
中的内容,他们没有意识到iostream
拉动在定义这些对象之前,在istream
和ostream
中都有。
在没有询问作者的情况下,很难说,但这些至少有两种可行的可能性。
答案 1 :(得分:2)
有人忘了删除标题。你应该总是只在实现文件中包含你需要的内容,但有时会因为人们懒惰和/或不知道更好而留下东西。
您应该删除不需要的那个。
答案 2 :(得分:2)
<iostream>
不 <istream>
和<ostream>
的组合。它仅定义std::cin
,std::cout
和相关对象。要对std::cout
实际执行任何有用的操作,您仍然需要<ostream>
。现在,根据C ++规则,某些实现可能实际上包含<ostream>
中的<iostream>
,但您不应该依赖于此。