5.3.2. ¿Es eso puro?

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.