Thread View: de.comp.lang.c++
2 messages
2 total messages
Started by Benjamin Baermann
Mon, 16 Oct 1995 18:22
Was ist RTTI?
Author: Benjamin Baermann
Date: Mon, 16 Oct 1995 18:22
Date: Mon, 16 Oct 1995 18:22
13 lines
845 bytes
845 bytes
Hallo!
Ich hoer euch hier in anderen Threads immer ueber RTTI reden. Kann mir
(und anderen, wenn es sie interessiert) jemand vielleicht kurz erklaeren
was das ist? Rapid-Type-True-Interface ;-?
Gruesse, Benni
--
benni@informatik.uni-frankfurt.de|http://www.uni-frankfurt.de/gnomic/hello.html
"Deshalb, Leute, die glauben, dass Computer werden nicht koennen, wie
Menschen zu denken, auch glaubt nicht in Maschine-Uebersetzung."
Re: Was ist RTTI?
Author: Karl-Heinz Krause
Date: Tue, 17 Oct 1995 17:42
Date: Tue, 17 Oct 1995 17:42
44 lines
1854 bytes
1854 bytes
Am 16. Okt. 1995 schrieb Benjamin Baermann
(benni@admeta.rbi.informatik.uni-frankfurt.de):
> Hallo!
> Ich hoer euch hier in anderen Threads immer ueber RTTI reden. Kann mir
> (und anderen, wenn es sie interessiert) jemand vielleicht kurz erklaeren
> was das ist? Rapid-Type-True-Interface ;-?
RTTI steht für Run Time Type Identification, also der Möglichkeit, den
wirklichen Typ eines Objekts zur Laufzeit bestimmen zu können. Beispiel:
class A { virtual ~A(){} };
class B: public A { int f(); };
A *p;
In C++ kann ein Zeiger des Typs A* auch auf ein Objekt einer
abgeleiteten Klasse verweisen. Erlaubt ist also z. B.
B b;
p = &b;
Mit RTTI ist es nun möglich, den tatsächlichen Typ, den das von p
referenzierte Objekt hat, zur Laufzeit festzustellen. Dazu gibt es in
C++ zwei Sprachmittel, nämlich "typeid" und "dynamic_cast". Beispiel:
cout << typeid(*p).name();
Gibt hier "B" aus, also den Namen des tatsächlichen Typs von *p.
B *pb = dynamic_cast<B*>(p);
if(pb) {
// *p hatte den Typ B, also können B-Operationen benutzt werden
pb->f();
}
else {
// *p hatte leider nicht den Typ B.
}
Das war nur eine grobe Übersicht. Nähere Auskünfte gibt ein Lehrbuch.
Oder die Doku Deines Compilers, falls der bereits RTTI unterstützt.
Karl-Heinz Krause
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads