dynamic_cast是C++ RTTI技术之一,那么它的应用场景是什么呢?我觉得学习一个东西得先明白它的应用场景,有了应用场景才明白为什么需要它。
dynamic_cast应用场景
C++是具有多态性的语言,有时候我们会面临这样的情况:手头只有一个基类类型的指针,但我们却希望用它来获取一些派生类中的相关信息,比如调用派生类的成员函数或者访问派生类的成员变量等,那么此时我们就需要用到dynamic_cast。它能够进行指针(或引用)安全的类型向下转换(downcasting,即从基类类型的指针转换为派生类类型的指针)。看个小例子:
#include <iostream>
class BaseClase
{
public:
BaseClase(int _a):a_(_a){
}
virtual ~BaseClase(){
}
int geta(){
return a_;}
private:
int a_;
};
//子类B,拥有自己特殊的成员变量b_和getb()成员函数
class DerivedClassB : public BaseClase
{
public:
DerivedClassB(int _a,int _b):BaseClase(_a),b_(_b){
}
int getb(){
return