Dynamic_cast for polymorphsim [英] Dynamic_cast for polymorphsim

查看:128
本文介绍了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 the static_cast in your third case, namely:
Base* bbb;
Derived ddd;
bbb=&ddd;
ddd->func1();





工作正常。



works fine.


这篇关于Dynamic_cast for polymorphsim的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆