在C++中,沒有類似Java或C#中的instanceof關鍵字來進行類型檢查。但是可以使用dynamic_cast來進行安全的類型轉換。dynamic_cast在進行類型轉換時會檢查類型是否安全,如果類型不安全,則返回nullptr(對于指針類型)或拋出std::bad_cast異常(對于引用類型)。
下面是一個使用dynamic_cast進行安全類型轉換的示例代碼:
#include <iostream>
class Base {
public:
virtual void foo() {}
};
class Derived : public Base {
public:
void bar() {}
};
int main() {
Base* base = new Derived();
Derived* derived = dynamic_cast<Derived*>(base);
if (derived) {
derived->bar();
} else {
std::cout << "Failed to cast to Derived" << std::endl;
}
delete base;
return 0;
}
在上面的示例中,我們首先創建了一個Derived類的實例,并將其賦值給一個Base類的指針。然后使用dynamic_cast將base指針轉換為Derived指針,并檢查轉換是否成功。如果成功,我們就可以安全地調用Derived類的成員函數bar()。如果轉換失敗,dynamic_cast會返回nullptr,我們可以根據返回值進行處理。
總的來說,使用dynamic_cast可以在進行類型轉換時進行安全的類型檢查,避免類型轉換錯誤的發生。