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 />

{<br />

B ObjB;<br />

c = 'a';<br />

ObjB.DoIt_B();<br />

printf("A: %c\n", c);<br />

};<br />

void main()<br />

{<br />

A ObjA;<br />

A::B ObjB;<br />

}<br />

ObjA.DoIt_A();<br />

ObjB.DoIt_B();<br />

Ausgabe:<br />

B: b<br />

A: a<br />

B: b<br />

Die innere Klasse (hier B) ist für die äußere, sie umschließende Klasse (hier A), lokal. Verschachtelte Klassen werden manchmal auch<br />

Member-Klassen genannt.<br />

Das ANSI-ISO-Komitee hat verschachtelte Klassen in OO-Pascal abgelehnt, weil "keine guten Gründe gef<strong>und</strong>en werden konnten,<br />

Verschachtelung zuzulassen <strong>und</strong> die Sprachdefinition, -implementation <strong>und</strong> Nutzung unnötig verkompliziert wird". [8, S. 41/42]<br />

Klassen lassen sich in <strong>C++</strong> auch lokal innerhalb <strong>von</strong> Funktionen definieren.<br />

void MyProc(void) // Prozedur<br />

{<br />

class B{<br />

// lokale Klasse<br />

int i;<br />

···<br />

};<br />

B Obj;<br />

···<br />

};<br />

<strong>Visual</strong> <strong>C++</strong> gestattet keine Definition <strong>von</strong> Methoden in lokalen Klassen. Lokale Klassen dürfen außerdem nicht <strong>von</strong> anderen Klassen<br />

erben. Aufgr<strong>und</strong> dieser starken Einschränkungen sind sie praktisch nicht interessant. Christian merkt dazu in [3] an: "Mit den<br />

verschachtelten <strong>und</strong> den lokalen Klassen hat man versucht, eine Nische zu füllen. Allerdings hat man sich damit weit <strong>von</strong> der eigentlichen<br />

Philosophie <strong>von</strong> <strong>C++</strong> <strong>und</strong> der objektorientierten Programmierung entfernt." Die beide Spracheigenschaften verschachtelte <strong>und</strong> lokale<br />

Klassen stellen Beispiele für das unnötige Überfrachten einer Sprache dar.<br />

2.3.6.2 Vererbung (Inheritance)<br />

Bei der Definition einer neuen Klasse kann eine bereits bestehende Klasse als Vorfahr (ancestor) angegeben werden. Die neue Klasse, auch<br />

http://ourworld.compuserve.com/homepages/praxisservice/kapit2c.htm (6 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!