Función de amigo C ++

Función de amigo C ++
Una función es un bloque de código que realiza una determinada tarea y proporciona la salida. Se utiliza principalmente para eliminar el código repetitivo. En este tutorial, analizaremos la función de amigos en C ++ y explicaremos su concepto con ejemplos de trabajo.

¿Qué es la función de amigo??

La función de amigo es una función no miembro que puede acceder a los miembros privados y protegidos de una clase. "Friend" es una palabra clave utilizada para indicar que una función es la amiga de una clase. Esto permite al compilador saber que la función particular es un amigo de la clase dada. La función de amigo entonces debería poder acceder al miembro privado y protegido de una clase determinada. Sin la palabra clave de amigo, una función externa no miembro solo puede acceder a los miembros públicos de una clase.

Características clave de la función de amigos:

Estas son las características clave de la función de amigo:

  1. Una función de amigo no está en el alcance de la clase.
  2. La función de amigo no se puede invocar utilizando una instancia de una clase.
  3. Puede acceder a los miembros que usan el operador de objeto y dot.

Sintaxis de la función de amigo:

Aquí está la sintaxis de la función de amigo:

clase class_name_demo



amigo return_type function_name (arg_1, arg_2, ...);
;

Ejemplo de función de amigo:

Ahora, veamos un programa de ejemplo para comprender el concepto de la función de amigo en C++. En el siguiente programa de ejemplo, tenemos la clase "Friend_Demo". Tiene tres tipos diferentes de miembros de datos, yo.mi., privado, protegido y público.

Hemos definido otra función, yo.mi., "FriendDemo_Func ()" fuera del alcance de la clase "Friend_Demo" e intentó acceder a los miembros (privados, protegidos y público) de la clase "Friend_Demo".

Pero, como puede ver en la salida a continuación cuando compilamos el programa, arroja errores de compilación. La función de amigo va a resolver exactamente este problema.

#incluir
usando el espacio de nombres STD;
Clase Friend_Demo

privado:
int i_private;
protegido:
int i_protected;
público:
int i_public;
;
void friendDemo_func ()

Amigo_demo fd;
fd.i_private = 10;
fd.i_protected = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;

int main ()

FriendDemo_Func ();
regresar 0;

En el programa anterior, estábamos recibiendo errores de compilación mientras intentamos acceder a los miembros privados, protegidos y públicos de una clase de una función no miembro. Esto se debe a que una función no miembro no puede acceder a los miembros privados y protegidos de una clase desde fuera del alcance de la clase.

Ahora, en este ejemplo, hemos declarado la función "FriendDemo_Func ()" como un amigo dentro del alcance de la clase, yo.mi., "Friend_demo":

amigo void friendDemo_func ();

Hemos creado un objeto, yo.mi., "FD" de la clase "Friend_Demo" dentro de la función "FriendDemo_Func ()". Ahora, podemos acceder a los miembros privados, protegidos y públicos de la clase "Friend_Demo" utilizando el operador DOT. Hemos asignado 10, 15 y 20 a i_private, i_protected e i_public, respectivamente.

Como puede ver en la salida a continuación, este programa ahora se compila y ejecuta sin ningún error e imprima la salida como se esperaba.

#incluir
usando el espacio de nombres STD;
Clase Friend_Demo

privado:
int i_private;
protegido:
int i_protected;
público:
int i_public;
amigo void friendDemo_func ();
;
void friendDemo_func ()

Amigo_demo fd;
fd.i_private = 10;
fd.i_protected = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;

int main ()

FriendDemo_Func ();
regresar 0;

Conclusión:

En este artículo, he explicado el concepto de la función de amigo en c++. También he mostrado dos ejemplos de trabajo para explicar cómo se comporta la función de amigo en c++. A veces, la función de amigos puede ser muy útil en un entorno de programación complejo. Sin embargo, un programador debe ser cauteloso al usarlo en exceso y comprometer sus características de OOP.