dynamic_cast用法
时间: 2023-09-07 19:14:21 浏览: 96
dynamic_cast是C++中的一个运算符,用于将一个指向基类对象的指针(或引用)转换为指向派生类对象的指针(或引用),同时还会检查转换是否合法。
使用语法:
```
dynamic_cast<type*>(ptr);
```
其中,type为目标类型,ptr为指向基类对象的指针。
如果ptr指向的是一个派生类对象,则返回指向该派生类对象的指针;否则返回空指针。
示例代码:
```c++
class Base {
public:
virtual void func() {}
};
class Derived : public Base {};
int main() {
Base* ptr_base = new Derived;
Derived* ptr_derived = dynamic_cast<Derived*>(ptr_base);
if (ptr_derived != nullptr) {
ptr_derived->func();
}
delete ptr_base;
return 0;
}
```
在上面的代码中,ptr_base指向一个Derived对象,由于Derived是Base的派生类,因此可以使用dynamic_cast将ptr_base转换为指向Derived的指针ptr_derived,然后通过ptr_derived调用Derived类的成员函数func()。
需要注意的是,dynamic_cast只能用于含有虚函数的类类型之间的转换,因为只有含有虚函数的类类型才能支持运行时类型信息(RTTI)。此外,dynamic_cast还可以用于转换指向类的引用类型的引用。
阅读全文