dynamic_cast是C++中的一種類型轉換操作符,用于在繼承關系中進行類型轉換。它用于將一個指向基類的指針或引用轉換為指向派生類的指針或引用。
語法如下: dynamic_cast<目標類型>(表達式)
使用dynamic_cast時,必須滿足以下條件:
dynamic_cast的作用是在運行時檢查類型轉換的合法性,如果轉換合法,則返回指向目標類型的指針或引用;如果轉換不合法,則返回nullptr(對于指針)或拋出std::bad_cast異常(對于引用)。
示例:
class Base {
public:
virtual void print() {
cout << "Base class" << endl;
}
};
class Derived : public Base {
public:
void print() override {
cout << "Derived class" << endl;
}
};
int main() {
Base* basePtr = new Derived();
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
if (derivedPtr != nullptr) {
derivedPtr->print(); // 輸出:Derived class
}
delete basePtr;
return 0;
}
在上述示例中,我們將Derived類的對象指針賦值給了Base類的指針basePtr。然后使用dynamic_cast將basePtr轉換為Derived類的指針,如果轉換成功,則調用Derived類的print函數輸出"Derived class"。