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

class A{<br />

friend void GlobalProc(A* ObjA);<br />

private:<br />

int TopSecret;<br />

};<br />

keine Fre<strong>und</strong>schaften<br />

für einzelne<br />

Funktionen<br />

<strong>und</strong> Methoden<br />

// globale Funktion<br />

void GlobalProc(A* ObjA)<br />

{<br />

ObjA->TopSecret = 5;<br />

};<br />

void main()<br />

{<br />

A Obj;<br />

GlobalProc(&Obj);<br />

}<br />

Im letzten Beispiel erhält eine globale Funktion GlobalProc die vollständige Zugriffsberechtigung auf alle geschützten Elemente in der<br />

Klasse A (hier auf die private Variable TopSecret).<br />

Um zu verhindern, daß unbeabsichtigt auf geschützte Klassenelemente anderer Klassen zugegriffen wird, müssen in Object Pascal einzelne<br />

Klassen in separaten Units untergebracht werden.<br />

2.3.6.8 Überladen <strong>von</strong> Operatoren<br />

Ein Spezialfall des Überladens <strong>von</strong> Funktionen in <strong>C++</strong> stellt das Überladen <strong>von</strong> Operatoren (operator overloading) dar. Vordefinierte<br />

Operatoren erlangen, angewandt auf Klassen, per Definition eine neue Bedeutung. Unter Verwendung des Schlüsselworts "operator" lautet<br />

die generelle Syntax:<br />

Ergebnistyp operator Operator-Zeichen ( ... , ... );<br />

Priorität <strong>und</strong> Assoziativität des überladenen Operators bleiben erhalten. Die zu Beginn des Kapitels eingeführte Klasse Komplex wird im<br />

Beispiel um den Operator "+" erweitert:<br />

class Komplex<br />

{<br />

public:<br />

void Zuweisung(double r,<br />

double i);<br />

void Ausgabe();<br />

Komplex operator+(Komplex z);<br />

private:<br />

double Real;<br />

double Imag;<br />

};<br />

...<br />

Komplex Komplex::operator+(Komplex z)<br />

{<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!