17.2.2 文档类实现中的序列化(2)

2013-10-07 16:13:24 · 作者: · 浏览: 60

17.2.2  文档类实现中的序列化(2)

对于对象中的基本数据类型,使用插入和析取运算符序列化数据。在读写派生于CObject的可序列化类的对象时,可以针对对象调用Serialize()函数,也可以使用插入或析取运算符。无论选择使用哪种方法,对于输入和输出都必须一致,不应当在输出对象时使用插入运算符,而在读回时使用Serialize()函数,反之亦然。

如果在读取一个对象的类型但对它一无所知,如读取文档内形状列表中的指针时,那么只能使用Serialize()函数。因为这将使虚函数机制登场亮相,所以适合于所指对象类型的Serialize()函数将在运行时确定。

构造CArchive对象的目的是用于存储对象或者检索对象。如果对象用于输出,那么CArchive函数IsStoring()将返回TRUE,如果对象用于输入,则返回FALSE。前面定义CSketcherDoc类的Serialize()成员时,已经使用过这个函数。

CArchive类还有许多其他成员函数,它们涉及序列化过程的详细技术,不过在您的程序中使用序列化时,实际上不需要了解它们。