MFC的Serialize序列化函数
来源:互联网 发布:核聚变发电 知乎 编辑:程序博客网 时间:2024/06/06 02:01
一、实现步骤:
要实现一个能够序列化的类,必须要经过一下几步
1.这个类必须间接火直接地由CObject派生而来2.定义一个不带参数的构造函数
3.在头文件中,必须有如下声明:
DECLARE_SERIAL( Your name of class)
4.在源文件中开头有如下声明
IMPLEMENT_SERIAL (Your name of class,CObject,1)
其中的第三个参数代表版本号
5.必须重载基类中的序列化函数Serialize
经过以上五步,一个带有存储功能的类就诞生了
二、序列化(Serialization)
1、 序列化提出和定义序列化在面向对象的程序设计中出现的,它基于对象是可以连续的思想,在程序退出或者启动的时候,可以把对象顺序的存储在磁盘或者从磁盘读出,存储和读出对象的过程叫做序列化。
2、 序列化存储的应用和局限
序列化存储可以把对象存储到磁盘上,但它并不能代替数据库设计的信息存储,因为它只是顺序的存取,没有检索机制。
3、 序列化的类
序列化的类可以直接或者间接从CObject类派生,类的声明中必须包含DECLARE_SERIAL 宏调用,实现文件也必须有与之对应的宏:
IMPLEMENT_SERIAL。(注意: DECLARE_SERIAL/IMPLEMENT_SERIAL包含了DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏)。
4、 MFC中序列化的使用
如果应用程序没有进行直接磁盘操作的输入输出,而是依靠序列化的过程,那么就不必直接使用CFile对象。MFC库中文档类的Serialize函数和CFile对象之间有一个CArchive对象。该对象为CFile对象缓冲数据并保持一个内部标志,来指明是存储或者加载对象。MFC应用程序框架负责CFile和Carchive对象构造及关联。在自动生成的菜单File Open 和FileSave等过程中,应用程序框架会调用文档的Serialize函数,我们可以在该函数中处理特定类对象的序列化。
下面是摘自vc技术内幕上的代码:
void CStudentDoc::Serialize(CArchive& ar){ TRACE("Entering CStudentDoc::Serialize\n");if (ar.IsStoring()){ // TODO: add storing code here}else{ // TODO: add loading code here} m_studentList.Serialize(ar);}
三、调用
MFC程序在打开或关闭文件操作的时候,会调用该函数。默认的该函数并没有对我们自己的数据(m_studentList)进行存取。我们在该函住中加入的最后一行代码序列化了我们的数据对象。当然这都需要我们自己编写自己数据类的Serialize函数。如下:(摘自vc技术内幕上的代码)
void CStudent::Serialize(CArchive& ar){ TRACE("Entering CStudent::Serialize\n"); if (ar.IsStoring()) { ar << m_strName << m_nGrade; } else { ar >> m_strName >> m_nGrade; }}
阅读全文
0 0
- MFC的Serialize序列化函数
- Serialize序列化函数(MFC)
- MFC序列化Serialize
- 序列化Serialize函数
- MFC 创建可序列化的对象 Serialize用法
- mfc serialize() 函数的使用
- form表单的序列化及serialize()函数的使用
- 纯js实现的serialize函数,序列化表单数据
- jquery中serialize()序列化函数
- PHP 序列化函数 serialize、unserialize
- 深入浅出MFC 第8章 关于序列化(Serialize)的一些问题
- 深入浅出MFC 第8章 关于序列化(Serialize)的一些问题
- 深入浅出MFC 第8章 关于序列化(Serialize)的一些问题
- MFC CArchive Serialize 序列化类 设计和使用
- 浅谈对象的序列化(Serialize)
- 浅谈对象的序列化(Serialize)
- PHP serialize()序列化的使用
- php的serialize序列化和json
- hdu—1004
- js作用域和作用域链
- 修改资源字符串
- 1258: 螺旋矩阵
- HDU5923-Prediction
- MFC的Serialize序列化函数
- django验证模块
- Volatile关键字解读(三)
- 有关性能的摘抄总结
- 基于原生HTML的UI组件开发
- 顺势而为,HTML发展与UI组件设计进化
- UDT源码剖析(一):UDT自带例程sendfile注释
- tensorflow中的随机裁剪函数random_crop
- hdu—1005