MFC运行时类信息定义 (主要是能判断他的类关系) 类似于类的类型鉴定14.5.5
2014-05-05 19:38
295 查看
// Dyramic.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "Dyramic.h" #include "conio.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // The one and only application object CWinApp theApp; using namespace std; class CAnimal:public CObject{ //运行时类信息定义 (主要是能判断他的类关系) DECLARE_DYNAMIC(CAnimal) public: CAnimal(); int m_nLeg; }; //运行时类信息实现 IMPLEMENT_DYNAMIC(CAnimal,CObject) CAnimal::CAnimal(){ m_nLeg=4; } class CDog:public CAnimal{ //运行时类信息定义 但如果子类定义了就不会进入父类的运行时类信息定义 //当下面PrintAnimal(&dog); 进入的时候 IF会判断为FALSE DECLARE_DYNAMIC(CDog) }; //运行时类信息实现 IMPLEMENT_DYNAMIC(CDog,CObject) void PrintAnimal(CObject *pObject){ //if(pObject->IsKindOf(RUNTIME_CLASS(dog))) //假如我这里修改为DOG类 那当animal传进来时 就会返回FALSE //因为dog是animal的子类所以下面这条语句能判断到DOG 但是如果 //像上面的IF判断的是DOG ,animal不属于DOG所以就无法通过判断 // if(pObject->IsKindOf(RUNTIME_CLASS(CAnimal))) { CAnimal *pAnimal=(CAnimal *)pObject; cout<< pAnimal->m_nLeg<<endl; } //判断是否继承于CAnimal if(pObject->GetRuntimeClass()->IsDerivedFrom(RUNTIME_CLASS(CAnimal))){ cout<<"CAnimal"<<endl; } } void Print(){ CAnimal animal; CDog dog; PrintAnimal(&animal); PrintAnimal(&dog); /*//查看animal是否属于CAnimal对象类型 if(animal.IsKindOf(RUNTIME_CLASS(CAnimal))) cout<< animal.m_nLeg<<endl; if(dog.IsKindOf(RUNTIME_CLASS(CAnimal))) cout<< dog.m_nLeg<<endl; */ } int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { // TODO: code your application's behavior here. CString strHello; strHello.LoadString(IDS_HELLO); //cout << (LPCTSTR)strHello << endl; } Print(); getch(); return nRetCode; }
相关文章推荐
- MFC六大机制之四:运行时类信息机制(RTTI)
- C++MFC编程笔记day04 运行时类信息和窗口的动态、静态切分
- MFC运行时类型信息相关类
- MFC(五)运行时类信息机制 动态创建机制 序列化机制
- MFC运行时类型信息(RTCI)
- MFC中关于运行时类信息及动态创建对象的两个宏的意义
- 前端、服务器端和数据库端结构关系?HTTP请求中如何判断浏览器类型?HTTP响应的状态码信息
- 《转》MFC六大关键技术之(二)——运行时类信息(RTTI)
- MFC复习和学习 第四章 MFC切分窗口 MFC运行时类信息 MFC动态创建
- 运行时类信息机制
- 初读CLR Via C# 之类型基础(二)程序运行时的关系
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
- windows/MFC_DYNAMIC_DOWNCAST判断指针所指向的内容是否为某class类型
- PHP根据文件头信息准确判断上传的文件类型
- 第二十五章补充内容 8 C++类型转换及运行时类型信息(RTII)
- 反射_01概述和反射中的运行时类型以及查看类型信息
- 获取系统磁盘类型信息以及判断是否是U盘
- [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断
- Unity3D的SystemInfo类,获取运行设备硬件信息(CPU、显卡、类型等)可用于手机
- MFC学习记录--(位操作)类型判断