Sei sulla pagina 1di 11

Funciones

Amigas
Una función amiga de una clase se
define por fuera del alcance directo de
los miembros privados de dicha clase,
pero aún así tiene el derecho de
acceso a los miembros private de la
clase.
Que son?
Una función amiga no es
necesariamente miembro de una clase
pero aun así tiene el acceso a los
elementos privados de la clase.
Las razones fundamentales para
utilizar funciones amigas es que
algunas funciones necesitan acceso
privilegiado a más de una clase

Una segunda razón es que las


funciones amigas pasan todos sus
argumentos a través de la lista de
argumentos y cada valor de
argumento se somete a la conversión
de asignación.
Sintaxis
 El modificador friend puede aplicarse a clases o
funciones para inhibir el sistema de protección.
 Las relaciones de "amistad" entre clases son parecidas
a las amistades entre personas:
 La amistad no puede transferirse, si A es amigo de B,
y B es amigo de C, esto no implica que A sea amigo de
C. (La famosa frase: "los amigos de mis amigos son mis
amigos" es falsa en C++, y probablemente también en
la vida real).
 La amistad no puede heredarse. Si A es amigo de B, y
C es una clase derivada de B, A no es amigo de C. (Los
hijos de mis amigos, no tienen por qué ser amigos
míos).
 La amistad no es simétrica. Si A es amigo de B, B no
tiene por qué ser amigo de A.
EJERCICIO
 De acuerdo al siguiente diseño
de la clase llamada punto,
desarrolle las funciones amigas
declaradas:
 Los únicos métodos de la clase será su constructor y destructor:
 Se definen la funciones friend de la siguiente manera:

Observe que en la definición de la función


amiga no se hace uso del operador de
ámbito(::), en cambio los argumentos que
recibe será siempre una referencia del
objeto(s) de la clase(s) a la cual accedera.
Implementación de la amistad.

Observe que en la llamada o invocación a la función


amiga se debe mandar como argumento el objeto de
la clase sobre el cual deseo que acceda

Es importante entender que una función amiga no es un miembro


de la clase de la que es amiga. Por lo tanto, no es posible llamar a
una función amiga usando un nombre de objeto y un operador de
acceso a miembro de clase (un punto o flecha).
¿Para qué sirven las funciones amigas?
Dos motivos por los que las funciones amigas son útiles tienen que ver con la
sobrecarga de operadores y la creación de ciertos tipos de funciones de E/S.

Una tercera razón para las funciones amigas es que habrá momentos en los
que una función tenga acceso a los miembros privados de dos o más clases
diferentes

Potrebbero piacerti anche