#include <iostream>
class Base {
public:
virtual void show() {
std::cout << "Base class" << std::endl;
}
};
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class" << std::endl;
}
};
int main() {
Base* basePtr = new Base();
Derived* derivedPtr = static_cast<Derived*>(basePtr); // 这里使用 static_cast 将基类指针转换为派生类指针
if (derivedPtr != nullptr) {
derivedPtr->show(); // 如果转换成功,调用派生类的 show 方法
} else {
std::cout << "Conversion failed" << std::endl;
}
delete basePtr;
return 0;
}
static_cast
是 C++ 中用于在相关类型之间进行显式类型转换的关键字。Base
类型的指针 basePtr
转换为 Derived
类型的指针 derivedPtr
。static_cast
不会检查运行时类型信息,因此如果 basePtr
实际上并不指向一个 Derived
对象,那么这种转换是不安全的。在这个例子中,由于 basePtr
确实指向的是 Base
对象而不是 Derived
对象,所以转换会失败(但不会抛出异常)。dynamic_cast
进行更安全的类型检查。上一篇:c++ delete
下一篇:c++ continue
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站