MFC教程(3)-- CObject类
2010-03-25 20:33:52 来源:WEB开发网对序列化的支持
“序列化”就是把对象内容存入一个文件或从一个文件中读取对象内容的过程。从CObject派生的类要具有序列化的功能,需要:
定义该类时,在类说明中使用DECLARE_SERIAL(CLASSNMAE)宏;
定义一个不带参数的构造函数(默认构造函数);
在类的实现文件中使用IMPLEMENT_SERIAL(CLASSNAME,BASECLASS)宏;
覆盖Serialize成员函数。(如果直接调用Serialize函数进行序列化读写,可以省略前面三步。)
对运行时类信息的支持、动态创建的支持、串行化的支持层(不包括直接调用Serailize实现序列化),这三种功能的层次依次升高。如果对后面的功能支持,必定对前面的功能支持。支持动态创建的话,必定支持运行时类信息;支持序列化,必定支持前面的两个功能,因为它们的声明和实现都是后者包含前者。
综合示例:
定义一个支持串行化的类CPerson:
class CPerson : public CObject
{
public:
DECLARE_SERIAL( CPerson )
// 缺省构造函数
CPerson(){}{};
CString m_name;
WORD m_number;
void Serialize( CArchive& archive );
// rest of class declaration
};
实现该类的成员函数Serialize,覆盖CObject的该函数:
void CPerson::Serialize( CArchive& archive )
{
// 先调用基类函数的实现
CObject::Serialize( archive );
// now do the stuff for our specific class
if( archive.IsStoring() )
archive << m_name << m_number;
else
archive >> m_name >> m_number;
}
更多精彩
赞助商链接