05.11.2013 Aufrufe

Vergleich von Delphi und Visual C++ - Inhalt

Vergleich von Delphi und Visual C++ - Inhalt

Vergleich von Delphi und Visual C++ - Inhalt

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Vergleich</strong> <strong>von</strong> <strong>Delphi</strong> <strong>und</strong> <strong>Visual</strong> <strong>C++</strong> - Kapitel 2C<br />

Bei der Entwicklung der Klassenbibliothek <strong>von</strong> <strong>Visual</strong> <strong>C++</strong> wurde auf die Verwendung <strong>von</strong> Mehrfachvererbungen verzichtet. Die<br />

Online-Dokumentation merkt dazu an: "Wir haben herausgef<strong>und</strong>en, daß die Mehrfachvererbung weder bei der Entwicklung einer<br />

Klassenbibliothek, noch beim Schreiben ernsthafter Anwendungen benötigt wird." [13]<br />

2.3.6.3 Zuweisungskompatibilität<br />

In <strong>C++</strong> können nur Klassen, die public abgeleitet wurden, vom Compiler implizit in ihre Basisklassen konvertiert werden. Solche <strong>C++</strong><br />

Klassen <strong>und</strong> alle Klassen in Object Pascal sind zuweisungskompatibel mit sich selbst <strong>und</strong> mit ihren Vorfahren.<br />

V<strong>C++</strong><br />

Object Pascal<br />

class Figur{<br />

···<br />

};<br />

class Rechteck : public Figur{<br />

···<br />

};<br />

class R<strong>und</strong>Rechteck : public<br />

Rechteck{<br />

···<br />

};<br />

class Ellipse : public Figur{<br />

···<br />

};<br />

type<br />

Figur = class<br />

···<br />

end;<br />

Rechteck = class(Figur)<br />

···<br />

end;<br />

R<strong>und</strong>Rechteck = class(Rechteck)<br />

···<br />

end;<br />

Ellipse = class(Figur)<br />

···<br />

end;<br />

Figur* F;<br />

Rechteck* R;<br />

R<strong>und</strong>Rechteck* RR;<br />

Ellipse* E;<br />

···<br />

F = F;<br />

F = R;<br />

F = RR;<br />

F = E;<br />

R = RR;<br />

R = F;<br />

// Fehler, inkompatible Typen<br />

R = E;<br />

// Fehler, inkompatible Typen<br />

RR = R;<br />

// Fehler, inkompatible Typen<br />

var F: Figur;<br />

R: Rechteck;<br />

RR: R<strong>und</strong>Rechteck;<br />

E: Ellipse;<br />

···<br />

F := F;<br />

F := R;<br />

F := RR;<br />

F := E;<br />

R := RR;<br />

R := F;<br />

// Fehler, inkompatible Typen<br />

R := E;<br />

// Fehler, inkompatible Typen<br />

RR := R;<br />

// Fehler, inkompatible Typen<br />

Wie man sieht, gilt die Zuweisungskompatibilität umgekehrt nicht. Eine Klasse ist mit keinem ihrer Nachfahren direkt<br />

zuweisungskompatibel (R := F). Zwischen gänzlich unverwandten Klassen, die völlig verschiedenen Ästen der Objekthierarchie<br />

http://ourworld.compuserve.com/homepages/praxisservice/kapit2c.htm (11 of 33) [19.05.2000 15:30:14]

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!