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.
<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]