CObject里有什么?
来源:互联网 发布:淘宝领取红包 编辑:程序博客网 时间:2024/04/26 19:57
CObject在afx.h文件中定义,这个头文件在使用MFC向导编程是都会自动包括。
1、CObject类的内容
CObject类定义中包含的函数如下表所示:
函数名称解释CObject()
1、默认构造函数2、当一个继承自CObject类需要序列化支持时(即要使用DECALRE_SERIAL),必须有一个默认的构造函数CObject( const CObject& objectSrc )1、复制构造函数delete1、这是一个操作符重载函数
2、有三种不同的参数列表形式,用于删除对象,以防止内存泄漏
new
1、这是一个操作符重载函数2、有三个不同的参数列表形式
3、在发布版本中其功能与malloc是相似的
4、在DEBUG版本中,使用#define new DEBUG_NEW将会对内存错误的报告多出一些内容
AssertValid () const
1、这是一个常函数2、用于对一个对象(的类)做有效性检查
Dump () const
1、这是一个常函数2、用于向CDumpContext类(这个类没有基类,这个类的对象可以使用<<输出信息,)对象输出信息
IsSerializable () const
1、这是一个常函数2、用于测试这个对象(类)是否可以序列化
Serialize (CArchive& ar)
1、用于序列化一个类2、例子:
void CAge::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if(ar.IsStoring()) //用CArchive类的IsStoring或IsLoading判断是输入或是输出
ar << m_years; //CArchive类没有基类,可以使用<<和>>
else
ar >> m_years;
}
GetRuntimeClass ()
1、用于返回一个CRuntimeClass结构类型的指针IsKindOf (const CRuntimeClass* pClass) const
1、这是一个常函数2、用于测试当前对象与给定类间的关系:是否是这个类的对象
2、CObject派生类的内容
当由CObject派生一个类是,你只是继承了四个虚函数和一个CRuntimeClass结构。
每个继承自CObject类的类都会有个CRuntimeClass结构与其相关,这个结构可以用于在运行时获取一个对象的类类型和基类类型。CRuntimeClass是个结构,不是任何类的派生。
CRuntimeClass结构最重要的应用就是与ASSERT函数一同使用来确定一个类/对象的类型:
//RUNTIME_CLASS是个宏,用于生成一个 指定类型(这个类必须是由CObject直/间接派生的)的CRuntimeClass结构指针
CRuntimeClass* pRuntimeClass = RUNTIME_CLASS( CMyClass );
CObject* pObject = pRuntimeClass->CreateObject();//IsKindOf可以验证一个类是否是调用IsKindOf的类的派生类或同类型
ASSERT( pObject->IsKindOf( RUNTIME_CLASS( CMyClass ) ) );
3、 CObject的派生类如何拥有动态类型信息、动态创建及序列化特性
使用宏
CObject::IsKindOf
(动态类型信息识别)
CRuntimeClass::
CreateObject
(动态创建类)
CArchive::operator>>
CArchive::operator<<
(序列化,将类写入可保存的文件)
无
No
No
No
DECLARE_DYNAMIC
Yes
No
No
DECLARE_DYNCREATE
Yes
Yes
No
DECLARE_SERIAL
Yes
Yes
Yes
- CObject里有什么?
- Windows 里有什么?
- Windows 里有什么?
- 专栏?专栏里有什么?
- tomcat里到底有什么?
- Java 1.7 里有什么?
- Java 1.7 里有什么?
- Java 1.7 里有什么?
- Java 1.7 里有什么?
- Java 1.7 里有什么?
- 一、Makefile里有什么?
- 目标文件里有什么
- Java 1.7 里有什么?
- 目标文件里有什么
- CObject
- Cobject
- CObject
- 你的枕头套里有什么
- .net下邮件发送代码
- unix与windows开发平台比较(一)--动态库实现
- 内核映像的形成 —— MakeFile预备知识(三)
- 内核映像的形成 —— MakeFile预备知识(四)
- [Android学习笔记] -- Activity和Intent
- CObject里有什么?
- 内核映像的形成 —— MakeFile预备知识(五)
- 获取手机信号量
- 安装配置ubuntu10
- gcc和g++的区别
- domino 读者域 作者域 收藏
- 基础
- 内核映像的形成 —— MakeFile预备知识(六)
- delphi链接oracle数据库