在 C 中,確定作為參數傳遞的物件的類型對於處理多態性類別及其衍生類別至關重要。當一個函數重寫另一個接受基底類別物件的函數,但重寫函數需要存取僅在衍生類別中可用的特定函數時,就會發生這種情況。
要解決此問題,可以使用dynamic_cast 進行強制轉換將物件從基底類別類型轉換為衍生類別類型,允許您檢查該物件是否屬於所需的衍生類別。
TYPE& dynamic_cast<TYPE&> (object); TYPE* dynamic_cast<TYPE*> (object);
Dynamic_cast 執行運行時檢查來驗證演員陣容的有效性。如果轉換為與實際物件類型不符的類型的指標或引用,則結果將分別為 NULL 或拋出 bad_cast 例外。
要注意的是,dynamic_cast 需要基底類別至少有一個虛函數才能正常運作。這是因為執行時間類型資訊 (RTTI) 僅適用於多型類別。實際上,大多數基底類別已經有一個虛擬析構函數,以允許衍生類別物件在從基底指標中刪除時正確清理。
以上是如何辨識傳遞給 C 函數的物件類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!