Operatoren bei Streamoperationen
-
Hallo!
Kann mir jemand bei der Beantwortung der folgenden zwei Fragen helfen?
1. Erkläre =-Operator und >>Operator bei Streamoperationen
2. Warum muss man den >>Operator bei Streamoperationen als Friend deklarieren?
Vielen Dank im vorhinein
-
Warum muss man den >>Operator bei Streamoperationen als Friend deklarieren?
Von *müssen* kann keine Rede sein.
Erkläre =-Operator und >>Operator bei Streamoperationen
Der >>-Operator dient bei Streams zum Extrahieren von Daten aus einem Stream.
Der =-Operator wird in der Regel in der Implementation des >>-Operators genutzt um den aus einem Stream gelesenen Wert einer Variable die an den op>> übergeben wurde zuzuweisen.
-
Die zweite Frage wurde uns so von unserem Trainer vorgegeben.
Vielleicht meinte er auch statt müssen soll bzw. wenn als friend warum.
-
Warum muss man den >>Operator bei Streamoperationen als Friend deklarieren?
Eine mögliche Antwort.
Um den binären operator>> in der gewohnten Form als Einleseoperator verwenden zu können, muss sein erster Parameter vom Typ istream (ungenau, ich weiß) sein.
Demzufolge kann er *niemals* als Member einer anderen Klasse X sondern mur als freie Funktion implementiert werden.
Für eine Klasse X besteht die Aufgabe des überladenen Einleseoperators>> darin,
Datein aus einem Stream zu extrahieren und diese den Instanzvariablen eines Objekts vom Typ X zuzuweisen.
Da Member-Daten aber in der Regel nicht public sind und da freie Funktionen keinen Zugriff auf private/protected-Elemente haben, muss der op>> als friend deklariert werden um seine Aufgabe durchführen zu können.
-
war die 2te Frage auf einen konkreten Fall bezogen? So ergibt sie keinen Sinn.