加载中…
个人资料
wayright
wayright
  • 博客等级:
  • 博客积分:0
  • 博客访问:21,119
  • 关注人气:2
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

VC笔记——串行化的利用

(2006-03-10 15:42:15)
    当用CArchive对象存取一个对象时,会保存这个对象的类的一些小信息(类信息,版本信息),并调用类的串行化函数来保存对象的成员变量。读取一个对象时,会读取保存的类信息,利用这些信息创建类的对象,并调用类的串行函数读取成员变量到对象中。
    串行化的步骤如下:
    1、在需要串行化的类定义中加入DECLARE_SERIAL(classname)宏和重载函数virtual void Serialize(CArchive &ar),并在cpp中添加代码。对于抽象类由于它没有定义对象,所以不必加入宏的定义,只需要加入函数即可。加入函数如下:
void baseclass::Serialize(CArchive &ar)
{
    if(ar.IsStoring())
        ar<<variable1<<variable2...
    else
        ar>>variable1>>variable2...
}
在子类中加入的重载函数中除了调用父类的串行化函数,还应读入加入的变量的读取。
注意:还应在cpp中加入宏IMPLEMENT_SERIAL(classname,baseclassname,1)
 
    2、由此就可以在文档中直接进行类的串行化了。如CLine类,可以用ar<<&line进行保存,其中line为一个初始化了的CLine对象。
 
    3、CObArray::Serialize这个函数存储数组的数目,然后对每个对象指针串行化,在存储中完成:a-对象类信息写入文件,b-调用对象的Serialize写入成员变量。
 
 
 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有