Wenn ich richtig verstehe, kann Typeid den tatsächlichen Typ in Polymorphie bestimmen, während Typeof nicht kann.Get Typ der Variablen
Ist es auch wahr, dass ihre Rückgaben für verschiedene Zwecke verwendet werden: Die Rückgabe von typeof wird als Typschlüsselwort verwendet, das Variable definieren kann, aber die Rückgabe von typeid kann nicht?
Gibt es eine Möglichkeit, sowohl den tatsächlichen Typ für Polymorphismus zu erhalten, als auch das Schlüsselwort return als Typ, um eine andere Variable zu definieren? Ich hoffe, den abgeleiteten Klassentyp aus einem Zeiger zu erhalten, der auf die Basisklasse zeigt, und eine Variable oder einen Zeiger auf die abgeleitete Klasse zu definieren. Etwas wie:
baseclass *p = new derivedclass
typexxx(*p) *pp = dynamic_cast<typexxx(*p) *> (p);
// would like to convert the pointer from pointing to a base class
// to its derived class
Vielen Dank!
Können Sie ein Beispiel dafür geben, warum Sie dies tun möchten? Der Hauptpunkt einer Vererbungshierarchie ist, dass Sie normalerweise den tatsächlichen Typ nicht kennen müssen. –
Ich möchte nur auf einige Member verweisen, die in der abgeleiteten Klasse, aber nicht in der Basisklasse definiert sind. Ich bin mir nicht sicher, ob es sinnvoll ist, der Basisklasse Elementfunktionen mit demselben Namen wie der abgeleiteten Klasse hinzuzufügen und sie als virtuell zu deklarieren, da diese Elementfunktionen zu spezifisch für diese bestimmte abgeleitete Klasse sind und in anderen nicht benötigt werden abgeleitete Klassen, und die Basisfunktion wird größer, wenn ich sie hinzufüge. – Tim
OK, Sie können tun, was Sie mit dynamic_cast wollen, aber Sie müssen eine IF-Leiter verwenden, um die Zeiger des abgeleiteten Typs zu erstellen. –