Vergleich von Delphi und Visual C++ - Inhalt
Vergleich von Delphi und Visual C++ - Inhalt
Vergleich von Delphi und Visual C++ - Inhalt
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Vergleich</strong> <strong>von</strong> <strong>Delphi</strong> <strong>und</strong> <strong>Visual</strong> <strong>C++</strong> - Kapitel 2C<br />
Obj2.Print();<br />
}<br />
Ausgabe:<br />
Std.-Konstruktor<br />
Hallo Welt<br />
Hal<br />
Ausgabe:<br />
Std.-Konstruktor<br />
Hallo Welt<br />
Kopie-Konstruktor<br />
Hallo Welt<br />
Object Pascal kennt keinen Kopie-Konstruktor. Als Ersatz wurde in <strong>Delphi</strong>s Klassenbibliothek VCL eine Methode "Assign" deklariert, die<br />
durchgängig in fast allen Klassen existiert:<br />
procedure Assign(Source: TPersistent); virtual;<br />
Sie weist ein Objekt einem anderen zu. Der allgemeine Aufruf lautet:<br />
Destination.Assign(Source);<br />
Dem Objekt Destination wird dadurch der <strong>Inhalt</strong> <strong>von</strong> Source zugewiesen. Das klassenspezifische Überschreiben der Methode Assign (bzw.<br />
der mit Assign verb<strong>und</strong>enen Methode AssignTo) entspricht somit der Definition eines klassenspezifischen Kopie-Konstruktors in <strong>C++</strong>.<br />
Allerdings wird eine Assign-Methode, anders als ein Kopie-Konstruktor, niemals automatisch aufgerufen.<br />
Destruktoren können in <strong>C++</strong> <strong>und</strong> Object Pascal virtuell sein. Ein polymorphes Überschreiben wird notwendig, wenn klassenspezifische<br />
Freigabeaktionen ausgeführt werden müssen. Virtuelle Konstruktoren sind nur in Object Pascal zulässig <strong>und</strong> werden im Zusammenhang<br />
mit Metaklassen verwendet.<br />
2.3.6.6 Metaklassen<br />
Metaklassen sind in <strong>C++</strong> nicht definiert; neben Object Pascal unterstützen z.B. die Sprachen Smalltalk <strong>und</strong> CLOS (Common Lisp Object<br />
System) Metaklassen. Eine Metaklasse ist ein Datentyp, dessen Werte Klassen sind. Während eine Klasse einen Typ definiert, der<br />
Objektreferenzen aufnehmen kann, kann eine Variable vom Typ einer Metaklasse Referenzen auf Klassen enthalten. Deshalb werden<br />
Metaklassen auch "Klassenreferenztypen" genannt.<br />
V<strong>C++</strong><br />
Object Pascal<br />
Klasse => Objekt<br />
Metaklasse => Klasse => Objekt<br />
zu lesen als:<br />
Instanzen <strong>von</strong> Klassen sind Objekte<br />
zu lesen als:<br />
Instanzen <strong>von</strong> Metaklassen sind Klassen<br />
Instanzen <strong>von</strong> Klassen sind Objekte<br />
Der Wertebereich einer Metaklasse umfaßt die Klasse, für die sie deklariert wurde <strong>und</strong> alle deren Nachfahren, insbesondere auch jene, die<br />
http://ourworld.compuserve.com/homepages/praxisservice/kapit2c.htm (24 of 33) [19.05.2000 15:30:15]