深入浅出MFC一书中使用IsKindOf函数时一般都会这样使用
CView* Pview=NEW Cview;
Pview->IsKindOf(RUNTIME_Class(CView))
第一个问题是:我想问的是IsKindOf函数本身的作用就是判断一个对象是否属于某一类或其派生类,那像上面这句CView* Pview=NEW Cview;其实已经很明确的告诉你Cview属于CView类类型指针,其实也已经告诉你它是属于CView类,那为什么还要再用IsKindOf函数在判断一下呢?
第二个问题是:再者其实向下面这段程序也是一样的既然都已经知道Cview是CView类的对象,而CView类又是从CWnd派生的类,那还用IsKindOf在判断一次干嘛?
CView* Pview=NEW Cview;
Pview->IsKindOf(RUNTIME_Class(CWnd))
第三个问题是:就是为什么VC必须要有对象自动类型判断功能,没有不行吗?为什么?
CView* Pview=NEW Cview;
Pview->IsKindOf(RUNTIME_Class(CView))
第一个问题是:我想问的是IsKindOf函数本身的作用就是判断一个对象是否属于某一类或其派生类,那像上面这句CView* Pview=NEW Cview;其实已经很明确的告诉你Cview属于CView类类型指针,其实也已经告诉你它是属于CView类,那为什么还要再用IsKindOf函数在判断一下呢?
第二个问题是:再者其实向下面这段程序也是一样的既然都已经知道Cview是CView类的对象,而CView类又是从CWnd派生的类,那还用IsKindOf在判断一次干嘛?
CView* Pview=NEW Cview;
Pview->IsKindOf(RUNTIME_Class(CWnd))
第三个问题是:就是为什么VC必须要有对象自动类型判断功能,没有不行吗?为什么?
解决方案 »
- windows 窗口消息
- MFC,我想创个类,怎么没有基类object
- 关于ADO连接SQL SERVER数据库的连接字符串问题
- 如何改变窗口的大小而不改变它的位置?
- 以前见过一本书叫程序员求职指南
- 如何直接操作网卡发包
- 想修改某一程序,使其先执行我的代码,令我先处理一些消息,再把不需要处理的消息传给原程序
- 一个关于文件读取的问题,给满分,顶的都有!~~~~~~~~~~~~~~~~
- 求问怎么的逐个汉字的输出汉字字符串啊
- 我大三了明年考计算机研究生,请给点建议,谢谢
- 怎么改变CListCtrl的行高?
- 谁有 Visual C++数据库实用编程100例的资料啊。。发给我下,是中国铁道出版社 出的那本,谢谢。QQ46450548
Pview->IsKindOf(RUNTIME_Class(CView));
这个地方是有点多余吧,但中间要是夹着一些代码似乎就有用了
或者看下面的例子// in .H file
class CPerson : public CObject
{
DECLARE_DYNAMIC( CPerson )
public:
CPerson(){}; // other declaration
};// in .CPP file
IMPLEMENT_DYNAMIC( CPerson, CObject )void SomeFunction(void)
{
CObject* pMyObject = new CPerson; if(pMyObject->IsKindOf( RUNTIME_CLASS( CPerson ) ) )
{
//if IsKindOf is true, then cast is all right
CPerson* pmyPerson = (CPerson*) pMyObject ;
...
delete pmyPerson;
}
...
delete [MyObject];
}====================================纯属个人看法
很多时候,是用在多个派生类中,比如有CView1 和CView2 和CView3 同时派生自CView。
则你可以声明 CView的指针 获得视图。
然后 根据判断是属于哪个类,转换成对应的视图指针。
看完你就知道它的作用啦