Warum ist Ostream :: Operator << eine globale Funktion für char -Parameter?
Frage
Gemäß http://www.cplusplus.com/reference/iosstream/ostream/operator%3c%3c/ Die auf EG StreamBuf definierte Operator << Methode ist ein Mitglied von Ostream, aber für char / char * ist es eine globale Funktion. Was ist die Designentscheidung hinter diesem Unterschied?
Lösung
operator<<
zum streambuf*
(oder int
was ein einfacherer Fall klingt) und char
Könnte sowohl als Mitgliedbetreiber als auch als Nichtmitglied (freie) Betreiber implementiert worden sein.
Ich vermute, dass es auf Probleme mit Retro-Kompatibilität zurückzuführen ist, während C ++ definiert wurde operator<<(int)
, und so beschlossen sie, es nicht als freier Bediener zu bewegen.
Die C ++ - Standardbibliothek (und auch STL) hat eine Reihe von Disomogenität wie diese.