Vergleich von Delphi und Visual C++ - Inhalt
Vergleich von Delphi und Visual C++ - Inhalt
Vergleich von Delphi und Visual C++ - Inhalt
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
{<br />
<strong>Vergleich</strong> <strong>von</strong> <strong>Delphi</strong> <strong>und</strong> <strong>Visual</strong> <strong>C++</strong> - Kapitel 2C<br />
A ObjA1;<br />
A ObjA2;<br />
}<br />
ObjA1.x = 4;<br />
printf("%d\n", A::x); // Ausgabe 4<br />
printf("%d\n", ObjA2.x); // Ausgabe 4<br />
Object Pascal kennt keine static-Felder. Die einzige (nicht sehr elegante) Möglichkeit, static-Felder nachzuahmen besteht darin, diese durch<br />
globale Variable zu ersetzen. Nach Möglichkeit sollten sie im Implementation-Abschnitt einer Unit definiert werden, so daß sie nicht im<br />
gesamten Programm sichtbar sind.<br />
Beide Sprachen können Methoden definieren, die bereits vor einer Klassen-Instanzierung aufgerufen werden können. <strong>C++</strong> nennt diese<br />
static-Methoden <strong>und</strong> Object Pascal bezeichnet sie als Klassenmethoden (gekennzeichnet durch das Wort class). Innerhalb solcher<br />
Methoden kann nicht auf Felder, Properties <strong>und</strong> normale Methoden zugegriffen werden.<br />
V<strong>C++</strong><br />
class A{<br />
public:<br />
static void Print(void);<br />
};<br />
void A::Print(void)<br />
{<br />
printf("Print!\n");<br />
};<br />
void main()<br />
{<br />
A::Print();<br />
// Aufruf als Klassenmethode<br />
}<br />
A* ObjA = new A;<br />
ObjA->Print();<br />
// Aufruf als Objektmeth.<br />
Object Pascal<br />
type<br />
A = class<br />
public<br />
class procedure Print;<br />
end;<br />
class procedure A.Print;<br />
begin<br />
writeln('Print!');<br />
end;<br />
var ObjA: A;<br />
begin<br />
A.Print;<br />
// Aufruf als Klassenmethode<br />
ObjA:= A.Create;<br />
ObjA.Print;<br />
// Aufruf als Objektmeth.<br />
end.<br />
Syntaktischer Unterschied: Einer static-Methode darf in <strong>C++</strong> bei der Methodenimplementierung nicht ein zweites Mal das Schlüsselwort<br />
static vorangestellt werden. In Object Pascal dagegen muß das Schlüsselwort class auch vor der Methodenimplementierung ein zweites Mal<br />
erscheinen. Static-/Klassenmethoden werden auch in den Klassenbibliotheken eingesetzt, um z.B. neue Objektinstanzen anzulegen:<br />
V<strong>C++</strong><br />
Im Makro DECLARE_DYNCREATE:<br />
static CObject* CreateObject();<br />
Object Pascal<br />
In der Klassendefinition zu TObject:<br />
class function NewInstance:<br />
TObject; virtual;<br />
http://ourworld.compuserve.com/homepages/praxisservice/kapit2c.htm (18 of 33) [19.05.2000 15:30:15]