dynamic_cast的用法
时间: 2023-09-07 08:15:14 浏览: 85
C++ 中dynamic_cast的用法
5星 · 资源好评率100%
dynamic_cast是一种C++中的类型转换运算符,它可以用于将一个基类的指针或引用转换为派生类的指针或引用。它的使用方式如下:
```c++
class Base {
public:
virtual void foo();
};
class Derived : public Base {
public:
void bar();
};
Base* base = new Derived();
Derived* derived = dynamic_cast<Derived*>(base);
```
在上述代码中,我们创建了一个Derived类的实例,然后将它的指针赋值给了一个Base类的指针。接着,我们使用dynamic_cast将Base类的指针转换为Derived类的指针,并将结果赋值给一个Derived类的指针。
如果转换成功,dynamic_cast就会返回一个指向Derived类实例的指针;如果转换失败,则返回nullptr。需要注意的是,使用dynamic_cast进行转换时,基类必须是多态的(即包含至少一个虚函数),否则会在编译时出现错误。此外,dynamic_cast只能用于指针或引用类型的转换,不能用于转换普通的值类型。
阅读全文