1. 序列化
序列化 -- 存档,把内存中的对象存储到文件
反序列化 -- 读档,把对象从文件读取内存
1.1 c++ -- 对象的个数信息和对象的类型信息都要存储到文件中
1.2 MFC 序列化
class myclass
1) 继承CObject
:public CObject
2) 重写Serialize虚函数
void Serialize(CArchive& archive)
3) 在类的声明中使用宏DECLARE_SERIAL
DECLARE_SERIAL(myclass)
4) 提供一个默认构造
myclass(){};
5) 在类的实现文件中使用宏IMPLEMENT_SERIAL
IMPLEMENT_SERIAL(myclass,CObject,1)
1代表的版本号
MFC 的序列化原理:
1.改造后的类,每个类都有一个CreateObject函数,用来new 对象
2.改造后的类,每个类都有一个CRuntimeClass的静态成员变量, 保存有CreateObject的函数指针
3.当反序列化的时,CArchive会拿到对应类型的CRuntimeClass,通过之前保存的函数指针来new 对象