In C++ ist es nicht erforderlich, dass der Rückgabetyp ein Verweis auf eine ostream
Objekt. Wenn Sie jedoch versuchen, etwas zu tun wie:
cout << instance_of_custom_type << 3 << "hi" << endl;
Dann brauchen Sie:
ostream &operator << (ostream &os, custom_type &t);
Wenn Sie jedoch z.B. einen großen Integer-Typ schreiben und die Bitverschiebung unterstützen wollen, könnte das etwa so aussehen:
BigInt operator << (const BigInt &i, unsigned int shift);
Um dies noch ein wenig weiter auszuführen: Die ursprüngliche Verwendung des <<
Operator ist für die Bitverschiebung. 1 << 8
ist zum Beispiel 256. C++ fügte eine (leicht verwirrende) zweite Verwendung für diese Funktion hinzu und überlud sie auf ostream
als "Ausgabe" in den Stream zu verstehen. Innerhalb eines überladenen Operators können Sie tun, was immer Sie wollen - er funktioniert genau wie eine Funktion, allerdings sind Operatoren mit einer menschlichen Erwartung verbunden: Programmierer erwarten in C++, dass <<
ist die Bitverschiebung oder Stromausgabe.