MFC CArchive Serialize 序列化类 设计和使用

本文详细介绍了MFC中CArchive类的序列化功能,包括如何通过IMPLEMENT_SERIAL宏设置版本码避免数据错误,以及如何隐式和显式创建CArchive对象进行数据存储和读取。通过具体示例展示了如何使用CArchive对象进行对象的序列化操作,重点阐述了Serialize()函数在类中的应用和作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

序列化的出发点在于,一个对象的当前状态应该可以永久地存储起来,这些当前状态主要用它的成员变量来表示。然后,这个对象可以通过读取文件或者反串行化重新构造出来。序列化包含了处理所有对象指针细节以及在序列化对象过程中使用的对象的循环引用。序列化的一个关键点在于一个对象负责自己状态的读写,因此,一个可序列化的类必须实现基本的序列化操作。就像在序列化系列文章中看到的,在一个类中加上序列化功能的过程是不复杂的。MFC把CArchive 类作为了要序列化对象与存储介质之间的桥接者。CArchive 类对象总是与一个CFile对象联系在一起(CFile文件可能是一个磁盘文件也可能是一个内存文件,也可能是一个剪贴板文件!),从CFile对象中,CArchive 类对象可以获得必要的序列化信息,这其中包括保存文件名和要进行的操作是读还是写。一个对象可以使用CArchive对象进行序列化操作,这个过程是存储介质无关的。


一、设计一个可序列化类的五个步骤:

  1. 从CObject类派生出自己的类
  2. 重载Serialize()函数
  3. 在类的申明中使用DECLARE_SERIAL 宏
  4. 定义一个无参数的构造函数(重建对象的时候要用)
  5. 在类的实现文件中添加IMPLEMENT_SERIAL宏

如果你直接使用Serialize()函数,并不使用CArchive的<<和>>操作符,就可以省去后面的3步。

一个实例如下:一个CPerson类,有两个数据成员
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值