visual c从入门到精通章串行化.pdf
串行化基础
在介绍串行化之前,先来了解一下与串行化有关的CArchive类。CArchive类简化了对文件的读写操作,它能够将对象的数据永久地
保留到磁盘文件中,并能够从磁盘文件中恢复对象。在CArchive类中重载了C++的“”和“”运算符,其中“”用于将
CObject类型或基本类型的数据到文件中,“”则用于从文件中加载CObject或基本类型的数据。下面介绍CArchive类的主要
方法。
1.CArchive
该方法是CArchive类的构造函数。
语法格式如下:
CArchive(CFile*pFile,UINTnMode,intnBufSize=4096,void*lpBuf=NULL);
tpFile:文件对象指针,对象的数据将在该文件中。nMode
t:表示对象是加载数据还是保存数据。为CArchive::load,表示从存档对象中加载数据;为CArchive::store,表示
对象到存档对象中;为CArchive::bNoFlushOnDelete,表示存档对象在释放时自动调用Flush方法。
tnBufSize:缓冲区大小,默认为4096个字节。lpBuf:一
t个可选的指针,指向用户提供的nBufSize大小的缓冲区。如果未指定该参数,存档对象从应用程序的局部堆中分
配缓冲区,并且在对象释放时释放缓冲区。如果用户指定了该缓冲区,在对象释放后需要手动释放该缓冲区。
2.Read
该方法用于从存档对象中数据。
语法格式如下:
UINTRead(void*lpBuf,UINTnMax);
tlpBuf:接收数据的缓冲区。
tnMax:以字节为单位表示数据的大小。
3.Write
该方法用于向存档对象中写入数据。
语法格式如下:
voidWrite(constvoid*lpBuf,UINTnMax);
tlpBuf:写入数据的缓冲区。
tnMax:以字节为单位表示写入数据的大小。
4.IsLoading
该方法用于确定存档对象是否被加载数据。
编写串行化类
15.2.1节介绍了使用CArchive类进行文件操作,本节将介绍使用CArchive类实现类的串
行化。要设计一个串行化类,通常需要进行5个步骤。首先,用户定义的类必须派生于
CObject或CObject的子类;然后重载Serialize方法,用以保存对象的数据成员到
CArchive对象以及从CArchive对象载入对象的数据成员的状态;接着在类体中加入
DECLARE_SERIAL宏,这是串行化类所必需的;然后为类提供一个无参数的构造函数,
也就是默认构造函数;最后在类的源文件中加入IMPLEMENT_SERIAL宏。下面通过一个
实例来介绍如何编写串行化类。
【例15.5】编写串行化类。(实例位置:光盘\TM\sl\15\5)
Thankyou
还有什么疑问可以到提出
也可以以发送邮件到