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.


Anmelden zum Antworten