在C++中,可以使用dynamic_cast進行類型檢查。dynamic_cast是一種安全的類型轉換操作符,用于在運行時檢查對象的實際類型是否與所需類型兼容。如果類型轉換成功,則返回指向目標類型的指針;如果類型轉換不成功,則返回nullptr。
以下是一個使用dynamic_cast進行類型檢查的示例:
#include <iostream>
class Base {
public:
virtual ~Base() {}
};
class Derived : public Base {
};
int main() {
Base* basePtr = new Derived();
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
if (derivedPtr) {
std::cout << "basePtr is a Derived object" << std::endl;
} else {
std::cout << "basePtr is not a Derived object" << std::endl;
}
delete basePtr;
return 0;
}
在上面的示例中,我們首先創建了一個基類Base和一個派生類Derived。在main函數中,我們創建了一個Derived對象,并將其賦值給一個Base指針basePtr。然后使用dynamic_cast將basePtr轉換為Derived指針derivedPtr,并進行類型檢查。如果轉換成功,則說明basePtr指向的對象是Derived類型;如果轉換不成功,則說明basePtr指向的對象不是Derived類型。
需要注意的是,dynamic_cast只能用于多態類型,即必須存在虛函數才能進行類型檢查。