WEB开发网
开发学院软件开发VC MFC教程(3)-- CObject类 阅读

MFC教程(3)-- CObject类

 2010-03-25 20:33:52 来源:WEB开发网   
核心提示:对序列化的支持“序列化”就是把对象内容存入一个文件或从一个文件中读取对象内容的过程,从CObject派生的类要具有序列化的功能,MFC教程(3)-- CObject类(3),需要:定义该类时,在类说明中使用DECLARE_SERIAL(CLASSNMAE)宏;定义一个不带参数的构造函数(默认构造

对序列化的支持

“序列化”就是把对象内容存入一个文件或从一个文件中读取对象内容的过程。从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;

}

上一页  1 2 3 4 5 6 7 8  下一页

Tags:MFC 教程 CObject

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接