C语言实例教程(PDF格式)-第57部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
将 自身的当前数据保存到永久介质中,这些数据一般由其成员变量所
提供;在需要的时候,对象还应该能够从永久介质中读出所保存的数
据,并用这些数据来重建该对象。在本节中,我们只讨论最基本串行
化操作,在 “8。3。5 串行化对象” 一节中描述了串行化对象和生成
可串行化对象所需要的附加信息。
…………………………………………………………Page 437……………………………………………………………
图8。7 保存文件时的串行化过程
在文档/视结构实现中,串行化一般是重载文档对象的Serialize成员
函数。在AppWizard创建应用程序框架的时候,生成了一个Serialize
重载函数的框架,如下面的代码所示:
void CExampleDoc::Serialize(CArchive& ar)
{
if (ar。IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
图8。7描述了保存文档时的串行化过程。
…………………………………………………………Page 438……………………………………………………………
图8。8 打开文档时的串行化过程
图8。8描述了打开文档时的串行化过程。
由图8。7和图8。8可以看出,无论是保存文档或是打开文档,应用程序
都是通过调用文档类的Serialize成员函数来完成串行化操作的。因
此,在大多数情况下,我们都通过重载Serialize成员函数来实现文
档的串行化。Serialize成员函数带有一个CArchive类型的参数,这
是一个与所打开的文件相关联的对象。一般情况下,我们总是使用
CArchive对象来保存和打开文档。
一个CArchive对象和一个标准的C++输入/输出流相类似,可以使用
C++析取运算符》》和插入运算符var和ar