WEB开发网
开发学院软件开发VC FMD开发文集 -- MFC CObject浅析 阅读

FMD开发文集 -- MFC CObject浅析

 2010-03-28 20:34:52 来源:WEB开发网   
核心提示:CObject是大部分的MFC类的基类 为了完成MFC类的判断、动态生成、序列化等特殊功能,CObject中添加了特定的处理,FMD开发文集 -- MFC CObject浅析, 为了进一步增强对MFC类对象的理解,在此对CObject源码及相关宏定义进行分析,多了nLine参数,用于保存原码行号, (所附代码并非原始代

CObject是大部分的MFC类的基类 为了完成MFC类的判断、动态生成、序列化等特殊功能,CObject中添加了特定的处理。 为了进一步增强对MFC类对象的理解,在此对CObject源码及相关宏定义进行分析。 (所附代码并非原始代码,为说明问题而作了删减。) 主要介绍了以下几方面内容:

1.CObject简要声明

2.CRuntimeClass结构

3.RUNTIME_CLASS

4.DYNAMIC支持

5.DYNCREATE支持

6.SERIAL支持

一.CObject简要声明

class CObject
{
public:
virtual CRuntimeClass* GetRuntimeClass() const;
virtual ~CObject();

void* PASCAL operator new(size_t nSize);
void* PASCAL operator new(size_t, void* p);
void PASCAL operator delete(void* p);
void PASCAL operator delete(void* p, void* pPlace);
#if defined(_DEBUG) //调试模式用,多了nLine参数,用于保存原码行号。
void* PASCAL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
void PASCAL operator delete(void *p, LPCSTR lpszFileName, int nLine);
#endif
protected:
CObject();
private:
CObject(const CObject& objectSrc);
void operator=(const CObject& objectSrc);
// Attributes
public:
BOOL IsSerializable() const;
BOOL IsKindOf(const CRuntimeClass* pClass) const;
// Overridables
virtual void Serialize(CArchive& ar);
#if defined(_DEBUG) //调试模式下用
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
public:
static const AFX_DATA CRuntimeClass classCObject;
static CRuntimeClass* PASCAL _GetBaseClass();
};
在此声明中很多都是纯虚函数,定义的一个一般对象的"界面"

1 2 3  下一页

Tags:FMD 开发 文集

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