La definición de la clase le da la pista, mirando la clase se
puede saber qué funciones tienen permiso para modificar su parte
privada. Si una función es friend
, significa
que no es miembro, pero que de todos modos se le quiere dar
permiso para modificar la parte privada, y debe estar
especificado en la definición de la clase para que todo el mundo
pueda ver que esa es una de las funciones privilegiadas.
C++ es un lenguaje orientado a objetos híbrido, no es puro, y
friend
fue añadido para solucionar algunos problemas
que se presentaban en la práctica. Es bueno apuntar que esto
hace al lenguaje menos «puro», pues C++ fue
diseñado para ser pragmático, no para aspirar a un ideal
abstracto.