Article View: de.comp.lang.c++
Article #604Re: Was ist RTTI?
From: 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
Technical Details
Message-ID:
<460pth$ns2@news00.btx.dtag.de>Path:
arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mailReferences:
<45u7u0$qfb@zeus.rbi.informatik.uni-frankfurt.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail From: Krause@btx.dtag.de (Karl-Heinz Krause) Newsgroups: de.comp.lang.c++ Subject: Re: Was ist RTTI? Date: 17 Oct 1995 17:42:09 GMT Organization: Telekom Online Internet Gateway Message-ID: <460pth$ns2@news00.btx.dtag.de> References: <45u7u0$qfb@zeus.rbi.informatik.uni-frankfurt.de> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Sender: 0913148778-0001@btx.dtag.de (Karl-Heinz Krause) X-Newsreader: Forte Free Agent 1.0.82