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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top