dynamic_cast 例子
时间: 2023-07-22 10:18:21 浏览: 90
dynamic_cast 是 C++ 中的一个类型转换运算符,用于将一个指针引用类型转换为另一个指针或引用类型。它在运行时进行类型检查,如果转换不合法,则返回空指针或引用。
下面是一个 dynamic_cast 的例子:
```c++
class Base {
public:
virtual void print() {
cout << "This is Base class." << endl;
}
virtual ~Base() {}
};
class Derived : public Base {
public:
void print() {
cout << "This is Derived class." << endl;
}
};
int main() {
Base* base_ptr = new Derived;
Derived* derived_ptr = dynamic_cast<Derived*>(base_ptr);
if (derived_ptr) {
derived_ptr->print();
} else {
cout << "Dynamic cast failed." << endl;
}
delete base_ptr;
return 0;
}
```
在上面的例子中,定义了一个基类 Base 和一个继承自 Base 的派生类 Derived。在 main 函数中,创建了一个指向 Derived 对象的 Base 指针 base_ptr,并将其转换为 Derived 指针 derived_ptr。如果转换成功,则调用 derived_ptr 的 print 函数,输出 "This is Derived class."。否则,输出 "Dynamic cast failed."。
需要注意的是,dynamic_cast 只能用于含有虚函数的类之间的转换,且转换前后的类型必须存在继承关系。如果转换的目标类型不是指针或引用类型,则 dynamic_cast 会产生编译时错误。
阅读全文