Está en la página 1de 2

FUNCIONES AMIGAS

En C++ seguimos pudiendo definir funciones independientes fuera de una clase pero no es
conveniente para una buena organización de nuestro código.
En algunas situaciones puede ser conveniente definir una función independiente pero que tenga
acceso a los atributos privados y protegidos de una clase, esto se logra con las funciones amiga
(friend)
Para definir una función amiga debemos anteceder la palabra clave friend y cuando la llamamos
como realmente no pertenece a la clase sino que es amiga la invocamos por su nombre y no
antecedemos un nombre de objeto.

1.- Una función amiga permite el acceso a todos los miembros de la clase desde la función principal

2.- Una función amiga se declara en la sección publica de la clase y considera como parámetro un
objeto de la clase a la cual se quiere tener acceso

SINTAXIS

class nombre
{
private:
miembros;
protected:
miembros;
public:
miembros;
fiend tipo NomFun(NomClase NomObj)
{acción}

int main ()
{
nombre obj;

NomFun(obj);
}

Un ejemplo de Funciones Amigas

#include<iostream>
#include<conio.h>
using namespace std;

class cuadrado
{
void leer (string texto);
float a,p,l;
public:
void area(void);
void perimetro (void);
void imprime (string texto1, string texto2);
void leer_p (string texto);
friend class circulo;
};

class circulo
{
public:
cuadrado L;
void figura1 (void)
{
L.leer_p("Lado: ");
L.area();
L.perimetro();
L.imprime("\n Area: ","\n Perimetro: ");
}
};

int main ()
{
circulo c;
c.figura1();
return 0;
}
void cuadrado::leer(string texto)
{
cout<<texto; cin>>l;

}
void cuadrado :: area (void)
{ a=l*l;} // es ele, es lado por lado

void cuadrado :: perimetro (void)


{p=4*l;}

void cuadrado :: imprime (string texto1, string texto2)

{
cout <<texto1<<a;
cout<<texto2<<p;
}
void cuadrado::leer_p(string texto)

{leer(texto); }

ESTE EJERCICIO ES EXTRA

Diseñar un programa en C++ que mediante una función amiga de nombre información, calcule e
imprima el promedio de edad y el porcentaje de hombres y mujeres que hay en un recinto.
La clase de nombre teatro (que contiene la función amiga información) se construye, para sumar la
cantidad de dinero recopilado de 18 personas que asistieron a la obra, a partir de los siguientes
miembros:
1.- Atributos privados: suma, *genero, *edad, *costo (apuntadores para administrar memoria)
2.- Métodos públicos:

-Leer_datos. Crea memoria dinámica de 18 elementos, captura el género (M o F) y la edad de cada


persona. Asigne el costo del boleto acorde a lo siguiente: 90 pesos si la edad es menor o igual a 18 y
150 pesos en caso contrario.
-Calcular_suma
-Imprimir_suma
3.- Agregue a la clase teatro la función amiga información para proporcionar los datos requeridos al
inicio del problema

Declare en la función principal el objeto teatro. Utilice los métodos del objeto para su implementación
y llame a la función información

También podría gustarte