在C++中,dynamic_cast是一种用于在类的继承体系中进行安全向下转型
在C++中,dynamic_cast是一种用于在类的继承体系中进行安全向下转型(即将基类指针或引用转换为派生类指针或引用)的操作符。它主要用于多态环境中,以确保类型转换是有效的。如果转换无效,dynamic_cast将返回nullptr(对于指针)或抛出std::bad_cast异常(对于引用)。
以下是使用dynamic_cast将父类指针或引用转换为子类指针或引用的基本示例:
示例代码
【cpp】
#include
#include
#include
class Base {
public:
virtual ~Base() {} // 必须有虚析构函数,以便支持多态
};
class Derived : public Base {
public:
void derivedFunction() {
std::cout << “Derived function called” << std::endl;
}
};
void checkDynamicCast(Base* basePtr) {
// 尝试将Base转换为Derived
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
if (derivedPtr) {
// 转换成功,调用派生类的函数
derivedPtr->derivedFunction();
} else {
// 转换失败,basePtr不是Derived类的实例
std::cout <