2017-10-11 15 views
1

私はC++のイントロレベルのクラスでクイズを取っています。質問を理解しようとしています。インターネットを検索して回答が得られなかったので、私はここにいる。 fstreamの、ofstreamの、のostream、iostreamの: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.

です。

私が理解できないのは、他のオプションのどれもが引数としてcoutまたはファイルストリームオブジェクトを受け入れることができない理由です。

ostreamオブジェクトには引数として渡すことができるデータ(charなど)が含まれているため、答えは簡単ですか?

すべての情報をいただければ幸いです。

+2

おそらく[このC++ I/Oリファレンス](http://en.cppreference.com/w/cpp/io)とその継承階層図は役に立ちますか? –

+0

関連:[派生クラスを、基本クラスをパラメータとする関数への参照によって渡すことは可能ですか?](https://stackoverflow.com/questions/9285627/is-it-possible-to-pass-derived-classes- by-reference-to-a-function-taking-base-cl) – Borgleader

+0

ファイルストリームを入出力できるので、 'D 'を選択します。答え 'C'のみが出力されます。 –

答えて

2

答えはCです。質問は継承階層についてです。 std::coutstd::ostreamのインスタンスです。他のすべての関数はstd :: ostreamのサブクラスを受け入れますので、std::coutは処理できません。 std::fstreamはそれらのすべてに渡すことができましたが、質問は両方についてでした。

+1

http://www.cplusplus.com/reference/iolibrary/これが役立つ可能性があります –