friend functions c
Conozca más sobre las funciones de amigos en C ++ con ejemplos.
C ++ admite la función de encapsulación en la que los datos se agrupan junto con las funciones que operan en ellos para formar una sola unidad. Al hacer esto, C ++ asegura que los datos sean accesibles solo por las funciones que operan en él y nadie fuera de la clase.
Esta es una de las características distintivas de C ++ que conserva los datos y evita que se filtren al mundo exterior.
=> Lea la serie de formación Easy C ++.
Pero en algunas aplicaciones en tiempo real, a veces es posible que deseemos acceder a datos fuera de la unidad incluida. Por ejemplo, una clase ajena puede querer acceder a datos privados y protegidos de una clase C ++.
C ++ proporciona una facilidad para acceder a datos privados y protegidos por medio de una característica especial llamada función o clase 'amigo' que discutiremos aquí en este tutorial.
Lo que vas a aprender:
- Función de amigo en C ++
- Ejemplo de función de amigo
- Clase de amigo
- Ventajas / desventajas de la función de amigo
- Conclusión
- Lectura recomendada
Función de amigo en C ++
Una función de amigo en C ++ es una función que está precedida por la palabra clave 'amigo'. Cuando la función se declara como amiga, entonces puede acceder a los miembros de datos privados y protegidos de la clase.
Una función de amigo se declara dentro de la clase con una palabra clave de amigo precediendo como se muestra a continuación.
|_+_|Como se muestra arriba, la función de amigo se declara dentro de la clase a cuyos miembros de datos privados y protegidos se debe acceder. La función se puede definir en cualquier lugar del archivo de código y no es necesario utilizar la palabra clave amigo o el operador de resolución de alcance.
Hay algunos puntos para recordar al implementar funciones de amigos en nuestro programa:
- Una función de amigo se puede declarar en la sección pública o privada de la clase.
- Se puede llamar como una función normal sin usar el objeto.
- Una función de amigo no está en el ámbito de la clase, de la que es amigo.
- Una función de amigo no se invoca utilizando el objeto de clase, ya que no está en el ámbito de la clase.
- Una función de amigo no puede acceder directamente a los miembros de datos privados y protegidos de la clase. Necesita hacer uso de un objeto de clase y luego acceder a los miembros usando el operador de punto.
- Una función amiga puede ser una función global o un miembro de otra clase.
Ejemplo de función de amigo
Implementemos un ejemplo de programación para comprender mejor el uso de la función Friend.
|_+_|Producción:
Área = 150
En el programa anterior, tenemos una muestra de clase con miembros privados de largo y ancho. Tenemos un constructor público que inicializa los valores de longitud y amplitud. A continuación, tenemos una función amiga 'calcArea' que calcula el área teniendo en cuenta la longitud y la anchura.
Tenga en cuenta que calcArea es una función amiga y no forma parte de la clase. En la función principal, luego de crear un objeto de la clase sample, lo pasamos a la función calcArea que calcula el área y muestra el valor.
Clase de amigo
Al igual que las funciones de amigos, también podemos tener una clase de amigos. La clase de amigo puede acceder a miembros privados y protegidos de la clase de la que es amigo.
|_+_|Como se muestra arriba, la clase B es amiga de la clase A. Entonces la clase B puede acceder a los miembros privados y protegidos de la clase A.
Pero esto no significa que la clase A pueda acceder a miembros privados y protegidos de la clase B. Tenga en cuenta que la amistad no es mutua a menos que lo hagamos así.
Del mismo modo, la amistad de la clase no se hereda. Esto significa que como la clase B es amiga de la clase A, no será amiga de las subclases de la clase A.
Tomemos un ejemplo de programación para demostrar la clase de amigos.
|_+_|Producción:
Área = 150
¿Qué tipo de pruebas te ayuda a cubrir el pepino?
En este programa, tenemos dos clases. La clase 'Área' que calcula el área utilizando los parámetros de longitud y anchura. Tenga en cuenta que los campos, el área, la longitud y la amplitud son todos miembros privados del Área de la clase.
La siguiente clase que se utiliza es la 'printClass' que imprime el área calculada por una función calcArea en la clase Area. Como los miembros son privados, necesitamos hacer que printClass sea un amigo de la clase del Área.
Una vez hecho esto, en la función principal creamos un objeto de la clase Area, calculamos el área y pasamos el objeto a la función printArea de la clase printClass para mostrar el área.
Ventajas / desventajas de la función de amigo
Una ventaja de la función o clase de amigo es que podemos acceder a los datos privados y protegidos de la clase. Por ejemplo, si estamos implementando una lista vinculada, entonces podemos hacer que la clase de lista vinculada sea un amigo de la clase de nodo y acceder a sus datos ya que la lista vinculada consta de nodos.
Por lo tanto, en una determinada situación, el uso de una función o clase de amigo puede resultar ventajoso. Sin embargo, también tiene algunas desventajas.
Una de las características distintivas de C ++ es la encapsulación, es decir, la agrupación de datos y funciones que operan en esos datos juntos para que ninguna función o clase externa pueda acceder a los datos. Pero al permitir que las funciones de amigo o la clase accedan a los miembros privados de otra clase, realmente comprometemos la función de encapsulación.
Para evitar esto, debemos tener cuidado con el uso de funciones o clases de amigos. Debemos asegurarnos de no usar demasiadas funciones y clases de amigos en nuestro programa, lo que comprometerá totalmente la encapsulación.
Conclusión
Con esto concluye nuestro tutorial sobre funciones y clases de amigos en C ++.
Los lectores deben ser muy cautelosos al usar clases y funciones de amigos, ya que si puede actuar como una bendición para el programador, también debe usarse con precaución ya que el uso excesivo de las funciones y clases de amigos puede comprometer la característica de encapsulación OOP en nuestro programa.
En nuestro próximo tutorial, aprenderemos sobre las funciones estáticas en C ++ en detalle.
=> Visite aquí para aprender C ++ desde cero.