fstream、ofstream、ostream、iostream的区别

Difference between fstream, ofstream, ostream, iostream

我正在参加 C++ 入门级别 class 的测验,我正在尝试理解一个问题。在网上搜索了很久没有得到答案,所以我来了。

Which of the following function declarations will accept either cout or a file stream 
object as its argument?

A. void output( fstream &outFile);  
B. void output( ofstream &outFile); 
C. void output( ostream &outFile);  
D. void output( iostream &outFile);

答案是C。

我知道 fstream、ofstream、ostream、iostream 之间的区别。

我不明白的是为什么 none 的其他选项能够接受 cout 或文件流对象作为参数。

答案是否像 ostream 对象包含能够作为参数传递的数据(char 等)一样简单?

如有任何信息,我们将不胜感激。

答案是C。问题是关于继承层次的。 std::coutstd::ostream 的实例。所有其他函数都接受 std::ostream 的子类,因此不能处理 std::coutstd::fstream 可以传递给他们所有人,但问题是关于两者。