在C++中,dynamic_cast主要用于在继承体系中进行“下行转换”, 即将父类的引用或指针转换为子类的引用或指针。根据其参数的不同,其结果有两种。
一、对指针进行转换。如果转换失败,其返回NULL。
T1 obj;
T2* pObj = dynamic_cast<T2*>(&obj);//转换为T2指针,失败返回NULL
二、对引用进行转换。如果转换失败,则抛出bad_cast异常
T2& refObj = dynamic_cast<T2&>(obj);//转换为T2引用,失败抛出bad_cast异常