Dynamic_cast for polymorphsim [英] Dynamic_cast for polymorphsim
本文介绍了Dynamic_cast for polymorphsim的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
亲爱的所有人,
Dear All,
#include <iostream>
using namespace std;
class Base
{
public:
Base(){}
~Base(){}
virtual void func1()
{
cout<<"Base_ONE"<<endl;
}
};
class Derived : public Base
{
public:
Derived(){}
~Derived(){}
void func1()
{
cout<<"Base _TWO"<<endl;
}
};
int main()
{
/* Base a;
Base *ba;
Derived b;
Derived *db;
//ba=&b;
ba=dynamic_cast<Base*>(&b);
if(ba)
cout<<"Conversion Success"<<endl;
else
cout<<"Conversion Fail"<<endl;
ba->func1();
*/
Base* b = new Derived;
b->func1();
Base* bb;
Derived d;
bb=&d;
bb->func1();
Base* bbb;
Derived ddd;
bbb=dynamic_cast<Base*>(&ddd);
bbb->func1();
return 0;
}
在上面的例子中,我能够以三种方式访问派生类成员函数。
1)使用基类指针对象,我能够访问派生类函数。
2)将派生类对象地址赋给基类指针对象。
3)使用dynamic_cast。
这里我的问题是,我应该使用哪个方法来使用基类指针来访问派生类函数?为什么?
问候,
Ranjith
In above example , i am able to access the derived class member function in three ways.
1)using base class pointer object , i am able to access the derived class function.
2)assigning the derived class object address to base class pointer object.
3)using dynamic_cast.
Here my question is , which method should i go for to access the derived class function using base class pointer and why?
Regards,
Ranjith
推荐答案
这取决于您的需求。
请注意,在第三种情况下你不需要static_cast
,即:
It depends on your needs.
Note you don''t need thestatic_cast
in your third case, namely:
Base* bbb;
Derived ddd;
bbb=&ddd;
ddd->func1();
工作正常。
works fine.
这篇关于Dynamic_cast for polymorphsim的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文