基类指针转换为派生类指针
dynamic_cast 运算符可以用于将基类指针转换为派生类指针。这对于实现多态性操作非常有用。例如:
class Base {
public:
virtual void func() {
cout << "Base" << endl;
}
};
class Derived : public Base {
public:
void func() {
cout << "Derived" << endl;
}
};
int main() {
Base *base_ptr = new Derived;
Derived *derived_ptr = dynamic_cast<Derived*>(base_ptr);
if (derived_ptr) {
derived_ptr->func(); // 输出 Derived
}
delete base_ptr;
return 0;
}
在上述代码中,我们定义了一个基类 Base 和一个派生类 Derived。在 main 函数中,我们创建一个 Derived 类的对象,并将其赋给一个 Base 类型的指针 base_ptr。然后,我们使用 dynamic_cast 运算符将 base_ptr 转换为 Derived 类型的指针 derived_ptr。由于 Derived 是 Base 的派生类,所以可以成功进行转换。最后,我们通过 derived_ptr 调用 func() 函数,输出 Derived。