Pourquoi est-ostream :: opérateur << une fonction globale pour les paramètres char?
Question
http://www.cplusplus.com/reference / iostream / ostream / opérateur% 3C% 3C / l'opérateur << méthode définie, par exemple sur streambuf est membre de ostream, mais pour char / char * est une fonction globale. Quelle est la décision de conception derrière cette différence?
La solution
operator<<
pour streambuf*
(ou int
qui semble un cas plus simple) et char
aurait pu être à la fois mis en œuvre que les opérateurs membres, ou les opérateurs non-membres (gratuit).
Je pense que cela est dû à des problèmes de rétro-compatibilité a émergé en C ++ était défini:. Le code peut-être plus relayait sur un operator<<(int)
membre, et donc ils ont décidé de ne pas bouger comme un opérateur libre
La bibliothèque standard C ++ (et STL) ont un certain nombre de inhomogénéités comme celui-ci.