检查基类指针类型的最佳方法是使用 dynamic_cast
。dynamic_cast
是 C++ 中的一种运行时类型识别 (RTTI) 机制,它允许在运行时检查指针或引用的实际类型是否是特定的类或类层次结构的一部分。
以下是使用 dynamic_cast
检查基类指针类型的示例:
#include<iostream>
class Base {
public:
virtual ~Base() {}
};
class Derived : public Base {
public:
void print() {
std::cout << "Derived class"<< std::endl;
}
};
int main() {
Base* basePtr = new Derived();
if (Derived* derivedPtr = dynamic_cast<Derived*>(basePtr)) {
derivedPtr->print();
} else {
std::cout << "Not a Derived class"<< std::endl;
}
delete basePtr;
return 0;
}
在这个示例中,我们使用 dynamic_cast
将 Base
类的指针转换为 Derived
类的指针。如果转换成功,则输出 "Derived class",否则输出 "Not a Derived class"。
需要注意的是,dynamic_cast
的性能可能会受到一定的影响,因此在性能敏感的场景中应该谨慎使用。
领取专属 10元无门槛券
手把手带您无忧上云