3. Definiciones
• Los datos miembro declarados como privados
dentro de la clase, pueden ser manipulados
por las funciones amigas.
• Las funciones amigas pueden declararse tanto
en la sección privada como pública dentro de
la clase (recomendado en la sección pública).
• Una función externa declarada como amiga de
una clase es una función no miembro.
4. Sintaxis
class nombre_clase
{
private:
int n;
void ingresar();
public:
friend void imprimir(nombre_clase &ob);
};
Llamada a función
void main()
{
nombre_clase obj;
imprimir(obj);
}
6. Definiciones
• La definición de la clase A, tiene una función
que va a ser amiga de la clase B.
• Se requiere de una declaración por
adelantado (forward) de la clase B.
• La clase B recibe como parámetro el objeto de
la clase A.
• Se debe declarar la función amiga con el
nombre completo de la clase a la que
pertenece.
7. Sintaxis
class A; // declaración forward
class B
{
private:
int n;
public:
void imprimir(A &ob); //uso de clase A como parámetro
};
class A
{
private:
int n;
public:
friend void B::imprimir(A &ob); //declaración completa
};
void B::imprimir(A &obj)
{
……….
}