friend istream/ostream, Operatorenüberladung
-
Hi,
da ich immer noch einige Probleme bezüglich Operatorenüberladung habe, bzw. mich noch zu wenig auskenne, wollt ich fragen was mir friend bei istream/ostream bringt? Und wann ich die erste / zweite Möglichkeit einsetzen sollte, und wozu:1...:
friend istream& operator>>(istream&, myClass&);
friend ostream& operator<<(ostream&, const myClass&);2...:
myClass& operator+=(const myClass&);
myClass operator ++ (int);
myClass& operator ++ ();Vielen Dank schon mal im Vorraus, mfg darki
-
1. Operatoren kannst du entweder als globale Funktionen überladen (dann werden alle Operanden per Parameter übergeben) oder als Member deiner Klasse (in dem Fall ist "*this" der erste Operand).
2. Die IO-Operatoren müssen global sein, weil der erste Operand ein istream bzw. ostream ist (in dessen Quellcode solltest du nicht rumpfuschen). Wenn diese Operatoren direkt auf private Elemente zugreifen müssen, benötigen sie deshalb friend-Zugriff.
3. Bei den meisten anderen Operatoren hängt es vom Zusammenhang ab, ob sie global oder als Member definiert werden - für Zuweisungsoperatoren und Inkrement/Dekrement bietet sich die Member-Form an, für (z.B.) arithmetische Operatoren (+, * etc) die globale Version (die hat den Vorteil, daß du damit auch Ausdrücke wie "myClass a,b; b=5+a;" compilieren kannst).
PS: Und ich will mal nicht so sein - kleiner Schubs ins richtige Board

-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.