Den Typ eines Objekts in C finden
Der Typ eines Objekts kann mit „dynamic_cast“ bestimmt werden. Diese Methode wandelt ein Datum dynamisch von einem Zeiger- oder Referenztyp in einen anderen um und überprüft die Gültigkeit der Umwandlung zur Laufzeit.
Verwendung:
So wandeln Sie es in einen Zeigertyp um:
TYPE* dynamic_cast<TYPE*>(object);
Zum Umwandeln in eine Referenz Typ:
TYPE& dynamic_cast<TYPE&>(object);
Ergebnis:
Runtime Type Information (RTTI)
Dynamic_cast basiert auf RTTI, das nur für verfügbar ist polymorphe Klassen (d. h. solche mit mindestens einer virtuellen Methode). In der Praxis stellt dies keine wesentliche Einschränkung dar, da die meisten Basisklassen über einen virtuellen Destruktor zur ordnungsgemäßen Bereinigung in abgeleiteten Klassen verfügen.
Beispiel:
Hier ist ein Beispiel für die Verwendung Dynamic_cast, um zu prüfen, ob ein Objekt vom Typ B ist:
class A {}; class B : public A { public: void b_function() {} }; void func(A& obj) { B* b_ptr = dynamic_cast<B*>(&obj); if (b_ptr != nullptr) { b_ptr->b_function(); // Object is of type B } else { std::cout << "Object is not of type B" << std::endl; } }
Das obige ist der detaillierte Inhalt vonWie kann ich den Typ eines Objekts zur Laufzeit in C bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!