Die Operatoren << und >>



  • Hi!

    Ich hab mal ne eher theoretische Frage... in C/C++ gibt es ja Funktionen wie cin und cout. Diese funktionieren etwa so:

    cin >> char[] a;
    cout << "Hello World";
    

    Wär möglich, dass ich die Operatoren vertauscht hab... ist ja auch eigentlich egal. Auch mit den C-Strings komm ich nicht ganz so klar, hoffe das ist auch richtig.

    Bei cout << "Hello World" wird ja scheinbar der String "Hello World" an eine Funktion (?) cout übergeben (bzw. cout liest den Wert über den Operator ein). Jetzt ist meine Frage: Wie funktioniert das? Irgendwie muss ja in der Funktion cout festgelegt werden, dass diese mit dem darauffolgenden <<-Operator einen String einlesen kann. Wie wird also in der Funktion cout beispielsweise gesagt, dass danach ein <<-Operator kommt, nach dem ein Wert kommt?

    Mit anderen Worten: Wie funktioniert <<?

    Mfg
    Calvin

    PS: Ich hoffe ihr habt mich verstanden... "Gewisse Personen" nämlich nicht.



  • Schau dir erstmal was zum Thema Operatorüberladung an oder such im Forum danach. Wurde schon öfters besprochen.



  • #include <iostream>
    
    using namespace std;
    
    class Gruesser
    {
    public:
    	Gruesser(const char *s) : m_s(s) {}
    
    	const char *wen() const {return m_s;}
    
    private:	
    	const char *m_s;
    };
    
    //<< Operator für die Klasse Gruesser
    ostream &operator<<(ostream &out, const Gruesser &g)
    {
    	return out << "Hallo " << g.wen();
    }
    
    int main()
    {
    	Gruesser g("Malo");
    	cout << g << endl;
    	cin.get();
    }
    


  • Danke, besonders für das Beispiel 🙂

    Das letzte Mal, dass ich mich mit Operatoren auseinandergesetzt hab, war, als ich mich in C# eingelesen hab... Unter Pascal gibts imho keine Operatorüberladungen. 😉



  • Malo: schau mal im C++-Buch deiner Wahl nach dem Kapitel "Streams" oder "Ein- und Asugabe"
    Dort wirst du finden, dass cout und Konsorten Objekte sind und nicht Funktionen.


Anmelden zum Antworten