C++流类库派生关系详解:istream、ostream等类的派生情况

网安智编 厦门萤点网络科技 2025-09-10 00:05 77 0
C++为实现数据的输入输出定义了一个庞大的流类库,它以ios为根基类,直接派生了四个类:输入流类、输出流类、文件流基类、字符串流基类。 这四个直接派生类又派生出其他的类,形成了标准I/O流类库、文件流类库和字符串流类库。它们的派生关系如下所...

C++为实现数据的输入输出定义了一个庞大的流类库,它以ios为根基类,直接派生了四个类:输入流类、输出流类、文件流基类、字符串流基类。

这四个直接派生类又派生出其他的类,形成了标准I/O流类库、文件流类库和字符串流类库。它们的派生关系如下所示。

输入输出流类,它同时继承了输入流类和输出流类。

输入文件流类,它同时继承了输入流类和文件流基类。

输出文件流类,它同时继承了输出流类和文件流基类。

输入输出文件流类,它同时继承了输入输出流类和文件流基类。

输入字符串流类,它同时继承了输入流类和字符串流基类。

输出字符串流类,它同时继承了输出流类和字符串流基类。

输入输出字符串流类,它同时继承了输入输出流类和字符串流基类。

C++流类库 ios iostream istreamt ostream fstream ifstream ofstream fstreambase strstream istrstream ostrstream strstream_c calloc

其中的每一个类都称作相应的流或流类,用以完成某一方面的功能,根据一个流或流类定义出的对象也时常称为流对象。它们之间的派生关系如图1所示。

C++流类库 ios iostream istreamt ostream fstream ifstream ofstream fstreambase strstream istrstream ostrstream strstream_c calloc

图1 I/O类库关系

注意:图1中的虚线表示此处是虚继承,实线表示一般的继承关系。

C++流类库中定义的各种流可以供用户直接使用,它们分别包含在、、三个头文件中,其包含情况如下所示:

(1)进行标准I/O操作时使用头文件,它包含ios、、和等类。

(2)进行文件I/O操作时使用头文件,它包含、、和等类。

(3)进行串I/O操作时使用头文件,它包含、、等类。