dynamic_cast怎么用
时间: 2024-02-05 07:45:48 浏览: 54
dynamic_cast 是 C++ 中的一个类型转换操作符,它的语法如下:
```
dynamic_cast<new_type>(expression)
```
其中,new_type 表示要转换的类型,expression 表示要转换的表达式。dynamic_cast 用于将一个指针或引用转换为另一种类型的指针或引用。它会在运行时检查转换是否合法,如果不合法则返回 NULL(如果是指针类型)或抛出 bad_cast 异常(如果是引用类型)。
下面是一个使用 dynamic_cast 的示例:
```c++
#include <iostream>
class Base {
public:
virtual ~Base() {} // 虚析构函数
};
class Derived : public Base {
public:
void foo() {
std::cout << "Derived::foo()" << std::endl;
}
};
int main() {
Base* ptr = new Derived;
Derived* d = dynamic_cast<Derived*>(ptr);
if (d) {
d->foo(); // 输出 Derived::foo()
} else {
std::cout << "ptr cannot be cast to Derived" << std::endl;
}
delete ptr; // 调用 Derived 的析构函数
return 0;
}
```
在上面的示例中,我们定义了一个基类 Base 和一个派生类 Derived,并在 main 函数中将 Derived 类型的指针转换为 Base 类型的指针。然后我们使用 dynamic_cast 将 Base 类型的指针转换为 Derived 类型的指针,并检查转换是否成功。由于 ptr 指向的是一个 Derived 对象,因此转换成功,输出 Derived::foo()。最后我们通过 Base 类型的指针释放了内存,由于 Base 类中定义了虚析构函数,因此会自动调用 Derived 类的析构函数。
阅读全文