新闻资讯
看你所看,想你所想

serialize

serialize

serialize是指从档案档案中读取该对象或向档案档案中写入该对象的函式。

函式原型

CObject::Serialize
virtual void Serialize(CArchive&ar);
throw(CMemoryException);
throw(CArchiveException);
throw(CFileException);
参数:
ar 被串列化的CArchive对象。

函式说明

从档案档案中读取该对象或向档案档案中写入该对象。
必须为希望串列化的每个类覆盖Serialize。被覆盖的Serialize首先必须调用基类的Serialize函式。
在类的声明中必须使用DECLARE_SERIAL宏,并且在类的执行过程中也必须使用IMPLEMENT_SERIAL宏。
使用CArchive::IsLoading或CArchive::IsStoring函式,用于决定是否装载或存储了档案档案。
通过CArchive::ReadObject和CArchive::WriteObject来调用Serialize函式。这些函式与CArchive插入操作符()相关联。
如果要了解有关串列化的例子,请参阅在线上文档“Visual C++程式设计师指南” 中的“串列化(对象永久化)”。

序列化

1. 该类需要从CObject类派生(可以是间接派生);
2. 在类中进行DECLARE_SERIAL宏定义;
3. 类存在有预设的构造函式;
4. 类中实现了Serialize()函式,并且在其中调用基类的序列化函式;
5. 使用IMPLEMENT_SERIAL宏指明类名及版本号;

作用局限

序列化简化了对象的保存和载入,为对象提供了持久性。但是,序列化本身仍具有一定的局限性。由于序列化一次从档案中载入所有对象,因此,它不适合于大档案编辑器和资料库。对于资料库和大档案编辑器,它们每次只是从档案中读入一部分。此时,就不应该採用文档的序列化机制来直接读取和保存档案了。另外,使用外部档案格式(预先定义的档案格式而不是本应用程式定义的档案格式)的程式一般也不使用文档的序列化。

示例

请参阅ObList::CObList,了解所有CObject示例中使用的CAge类。
// example for CObject::Serialize
void CFileSerializeDoc::Serialize(CArchive& ar){
if (ar.IsStoring()){
ar << m_sizeDoc; //m_sizeDoc信息序列化到ar
}else{
ar >> m_sizeDoc; //ar序列化到m_sizeDoc
}
m_strokeList.Serialize(ar);//序列化m_strokeList
}

转载请注明出处海之美文 » serialize

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com