您的位置:首页 > 其它

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐