17.2.2 文档类实现中的序列化(2)
对于对象中的基本数据类型,使用插入和析取运算符序列化数据。在读写派生于CObject的可序列化类的对象时,可以针对对象调用Serialize()函数,也可以使用插入或析取运算符。无论选择使用哪种方法,对于输入和输出都必须一致,不应当在输出对象时使用插入运算符,而在读回时使用Serialize()函数,反之亦然。
如果在读取一个对象的类型但对它一无所知,如读取文档内形状列表中的指针时,那么只能使用Serialize()函数。因为这将使虚函数机制登场亮相,所以适合于所指对象类型的Serialize()函数将在运行时确定。
构造CArchive对象的目的是用于存储对象或者检索对象。如果对象用于输出,那么CArchive函数IsStoring()将返回TRUE,如果对象用于输入,则返回FALSE。前面定义CSketcherDoc类的Serialize()成员时,已经使用过这个函数。
CArchive类还有许多其他成员函数,它们涉及序列化过程的详细技术,不过在您的程序中使用序列化时,实际上不需要了解它们。