dynamic_cast 使用例程
时间: 2024-02-05 17:39:16 浏览: 66
dynamic_cast 是 C++ 中的一个类型转换运算符,用于将一个指针或引用转换为另一个类的指针或引用。
下面是一个 dynamic_cast 的使用例程:
```c++
#include <iostream>
using namespace std;
class Base {
public:
virtual void print() {
cout << "This is a base class." << endl;
}
};
class Derived : public Base {
public:
virtual void print() {
cout << "This is a derived class." << endl;
}
};
int main() {
Base *base = new Base();
Derived *derived = dynamic_cast<Derived*>(base);
if (derived == nullptr) {
cout << "Cast failed." << endl;
} else {
cout << "Cast successful." << endl;
derived->print();
}
delete base;
return 0;
}
```
在这个例程中,我们定义了一个基类 Base 和一个派生类 Derived。在 main 函数中,我们创建了一个 Base 类的对象 base,并尝试将其转换为 Derived 类的指针 derived,使用了 dynamic_cast 运算符。由于 base 对象实际上不是 Derived 类型的对象,因此 dynamic_cast 操作失败,返回一个空指针。我们在 if 语句中检查 derived 指针是否为空,如果为空,说明转换失败;否则,我们可以通过 derived 指针调用 Derived 类中的函数 print()。
需要注意的是,dynamic_cast 运算符只能用于指向类的指针或引用,并且只能用于在运行时进行类型检查的类之间的转换。由于 dynamic_cast 运算符需要在运行时进行类型检查,因此会带来一定的运行时开销,应该谨慎使用。
阅读全文