dynamic_cast 指向完整的数据类型
时间: 2024-09-24 18:06:10 浏览: 21
`dynamic_cast` 是C++中的一种特殊类型转换运算符,它主要用于运行时检查和转换指针或引用。与其他转换不同,`dynamic_cast` 主要针对的对象具有多态性质,即一个基类类型的指针或引用可以指向其派生类的对象。`dynamic_cast` 的目标是获取更具体的、完整的数据类型信息,以便在安全的情况下进行操作。
例如,如果你有一个指向基类的指针,但不确定具体是什么类型的派生类,你可以使用`dynamic_cast` 来尝试将其转换为对应的派生类指针,如果转换成功,则返回非空指针;若无效(比如不是正确的类型),则返回空指针或`nullptr`。
```cpp
class Base {
public:
virtual ~Base() {}
};
class Derived : public Base {
public:
void derivedMethod() { /* ... */ }
};
int main() {
Base* basePtr = new Derived();
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
if (derivedPtr) {
// 现在我们有了指向派生类的指针,可以安全地调用Derived特有的方法
derivedPtr->derivedMethod();
} else {
// 如果转换失败,说明base不是一个Derived对象
}
return 0;
}
```
阅读全文