当前位置: 首页 > 文档资料 > C++大学教程 >

14.12 对象的输入/输出

优质
小牛编辑
116浏览
2023-12-01

本章和第11章介绍C++的面向对象式的输入,输出。但我们的例子主要考虑传统数据类型的I/O而不是用户自定义类对象的I/O。第8章介绍了如何用运算符重载输入与输出类对象。

我们通过对相应的istream重载流读取运算符>>进行对象输入,通过对相应的ostream重载流插入运算符<<进行对象输出。两种情况下都只输入和输出对象的数据成员,而且都是对特定的抽象数据类型对象有意义的方式进行。对象成员函数在计箅机内部提供,在数据输入时通过重载流插入运算符而与数据值组合。

对象的数据成员输出到磁盘文件时,就会丢失对象的类型信息。我们存盘的只有数据,而没有类型信息。如果读取这个数据的程序知道其对应的对象类型,则数据读取到该类型的对象。

如果同一文件中存放不同类型的对象,则会发生有趣的问题,如何在读取到程序中时区分它们(或其数据成员集合)呢?当然,问题在于对象通常没有类型域(见第10章“虚函数和多态性”中的介绍)。

一个方法是让每个重载的输出运算符输出类型代码,放在表示一个对象的数据成员集合前面。

然后对象输人总是以读取类型代码域开头,并用switch语句调用相应的重载函数。尽管这个方法没有多态编程那么巧妙,但提供了在文件中保持对象并在需要时读取的机制。