」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何實作 Java 的「instanceof」運算子的 C++ 等效項?

如何實作 Java 的「instanceof」運算子的 C++ 等效項?

發佈於2024-11-17
瀏覽:691

How to Achieve the C   Equivalent of Java\'s \

如何實現C 語言中的Java 的instanceof

在Java 中,「instanceof」運算子可讓您確定一個物件是否屬於某某個物件特定的類別或介面。在 C 中,有多種方法可以實現此功能。

使用 RTTI 進行動態轉換

一種方法是使用啟用了運行時類型資訊 (RTTI) 的動態轉換。這要求您包含必要的標頭:

#include 
#include 

然後您可以使用以下指令執行動態轉換:

if(NewType* v = dynamic_cast(old)) {
   // old was safely casted to NewType
   v->doSomething();
}

請注意,此方法需要在編譯器中啟用 RTTI 支援。

虛擬函數

另一種方法是使用虛擬函數。您可以在基底類別中定義虛函數並在衍生類別中重寫它。然後,您可以透過呼叫物件的虛擬函數來檢查物件的動態類型:

class Base {
public:
    virtual void doSomething() {}
};

class Derived : public Base {
public:
    void doSomething() override {}
};

...

if(auto* derived = dynamic_cast(old)) {
    derived->doSomething();
}

型開關

最後,您可以使用型別開關來決定物件的動態型別。這種方法依賴 type_info 類別:

if(old.IsSameAs(typeid(NewType))) {
    // old was safely casted to NewType
    NewType* v = static_cast(old);
    v->doSomething();
}

注意事項

雖然這些方法提供與Java 的“instanceof”運算符類似的功能,但重要的是要記住動態轉換和類型檢查可能會導致效能損失。建議考慮使用虛擬功能或類型開關等替代方法,以便在關鍵應用程式中獲得更好的效能。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3