我正在C++的一个介绍级别课程上进行测验,我试图理解一个问题。在搜索了互联网并没有得到答案之后,我就在这里。fstream,ofstream,ostream,iostream之间的差异
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的。
我不明白的是为什么没有其他选项能够接受cout或文件流对象作为参数。
答案就像ostream对象包含可以作为参数传递的数据(char等)一样简单吗?
任何信息将不胜感激。
也许[此C++ I/O参考](http://en.cppreference.com/w/cpp/io)及其继承层次结构图可以提供帮助吗? –
相关:[是否可以通过引用派生类来传递函数以基类作为参数](https://stackoverflow.com/questions/9285627/is-it-possible-to-pass-derived-classes- by-reference-to-a-function-taking-base-cl) – Borgleader
我会选择'D',因为可以输入和输出文件流。答案'C'只是输出。 –