Pregunta

De acuerdo con http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/ El método del operador << definido en EG StreamBuf es un miembro de Ostream, pero para Char / Char * es una función global. ¿Cuál es la decisión de diseño detrás de esta diferencia?

¿Fue útil?

Solución

operator<< por streambuf* (o int que suena un caso más simple) y char podrían haberse implementado como operadores miembros, o como operadores no miembros (gratuitos).

Supongo que se debe a que surgieron problemas de retrocompatibilidad mientras C ++ se definía: tal vez el código más antiguo transmitía a un miembro operator<<(int), y así decidieron no moverlo como operador libre.

La biblioteca estándar C ++ (y también STL) tiene una serie de Dishomogeneidad como esta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top