📄 untitled-15.txt
字号:
df<< 1llJ-PtFIOI<< Ill--PtTO;
e】Se V L0ad土ng,not StQhng
or>>fTI-- piE>00>>ITI-- ptTO;
8
在实现类的过程中出现语句
⑤。~IMPLENENT.SERIAL(CL土ne,C0b」ect,1)
经过这些修改,类就可以串行化了。目前版本号为1,如果后来又给CLine添加了一个持久
性数据成员,则要把版本号增加到2,这样主结构就能根据程序的不同版本区别串行化到磁
盘的Cline对象了。否则,磁盘上版本为回的Cline就可能被读人内存中版本为2的CLine,
从而可能造成严重损失。
该类实例被要求串行化或并行化时, MFC调用实例的 CLine:: Serialize函数。在将自己
的数据成员串行化之前, CLine:: Serialize调用 COhject:: Serialize串行化基本类的数据成员。
在这个示例中,基本类的 Serialize函数并不起作用,但是如果您编写的类是间接由 CObject
派生来的,那么情况就可能不同了。基本类调用返回之后, CLine:: Serialize调用 CArchive::
Isstoring决定数据流的方向。如果返回值为非0值,则数据串行化到档案中;如果为0,则数
据被串行化读出。Chne::Seddlie根据该返回值决定是用<<运算符向档案中写数据呢,还
是用>>运算符从档案中读取数据。
6.2.3给可串行化类分配版本号:可配置版本模式
编写可串行化类时,MFC用您指定的模式号制定一个粗略的版本控制方式。在向档案
写数据时,MFC用模式号标记该类的实例;而在读回数据时,MFC将档案中记录的模式号和
应用程序中使用着的该类对象的模式号做比较,如果两模式号不匹配,则MFC发送一个
CA。hlveException淇。 cause等于 CA。hiveException:: badschema。没有得到处理的该类异常
会促使MFC显示一个消息框,提示“文件格式不对”。如果每次修改对象的串行化存贮格式
时都能做到增加模式号,那么就不怕这种无心的操作一试图把磁盘中存的老版本对象读人
内存里的新版本对象了。
有一个问题经常会突然在使用了可串行化类的应用程序中出现,这就是向下兼容性。
换句话说,就是如何并行化在老版本应用程序中创建的对象。如果对象的持久存贮格式随
应用程序版本的更新发生了变化,这时您可能希望新版本应用程序对两种格式都能读。但
是一旦MFC发现不配套的模式号,它将发送异常。鉴于MFC的结构特点,最好按照MFC的
方式处理异常并中止串行化过程。
可视化模式也就此产生了。可视化模式只是包含VERSIONABLE.SCHEMA标志的模式
号。标志告诉MFC应用程序针对某一类能够处理多种串行化的数据格式。这种模式禁止
CArchiveException,并允许应用程序对不同的模式号有判断地响应。使用了可视化模式的应
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -