Diferencia entre la función de amigo y la clase de amigo

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 13 Mayo 2024
Anonim
Diferencia entre la función de amigo y la clase de amigo - Tecnología
Diferencia entre la función de amigo y la clase de amigo - Tecnología

Contenido


La función Amigo y la clase amigo son las técnicas utilizadas para acceder a los miembros privados de una clase mediante el uso de la palabra clave amigo. La diferencia común entre la función de amigo y la clase de amigo es que cuando se usa la función de amigo se puede acceder a los miembros de la clase privada, pero en la clase de amigo, solo se accede a los nombres de la clase de amigo, no a los miembros privados de la clase.

los característica de amigo si es utilizado por la función o la clase puede producir un impacto negativo en el marco orientado a objetos, ya que debilita el encapsulamiento que está en contra de orientado a objetos paradigma. Esta es la razón por la cual la función de amigo debe usarse sabiamente, de lo contrario podría rotura el ocultación de datos del código

Esta característica de amigo no es conmutativo y ni transitivo. X es amigo de Y no infiere que Y también es amigo de X. Si X es amigo de Y e Y es amigo de Z, no implica que X sea amigo de Z.


    1. Cuadro comparativo
    2. Definición
    3. Diferencias clave
    4. Conclusión

Cuadro comparativo

Bases para la comparaciónFunción de amigoClase amigo
BásicoEs una función utilizada con una palabra clave friend para otorgar acceso a una función que no sea miembro a los miembros privados de una clase.Es una clase utilizada con una palabra clave amigo para acceder a los miembros privados de otra clase.
Declaración de avanceDebe ser usado.No es obligatorio.
UtilizarSe puede usar una función de amigo en alguna situación de sobrecarga del operador.Se puede usar una clase de amigo cuando se crea una clase en la parte superior de otra clase.

Definición de función de amigo

los función de amigo se utiliza para acceder a los miembros privados y protegidos de una clase al permitir que la función no miembro obtenga acceso. En este tipo de función, se usa una palabra clave friend antes del nombre de la función en el momento de la declaración. Existen algunas condiciones restrictivas aplicadas a la función de amigo. La primera condición es que la función amiga no es heredada por una clase secundaria. La segunda condición es que el especificador de clase de almacenamiento puede no estar presente en la función amiga, lo que significa que no se puede declarar como estático y externo.


La función de amigo no se llama con un objeto de invocación de la clase. Los ejemplos de función amiga son: una función global, función miembro de una clase, la plantilla de función puede ser una función amiga. Vamos a entenderlo con la ayuda de un ejemplo.

#incluir usando el espacio de nombres estándar; class first {int data; public: first (int i): data (i) {} friend void display (const first & a); }; pantalla vacía (const first & a) {cout << "data =" <usando el espacio de nombres std; class First {// Declara un amigo class friend class Second; public: First (): a (0) {} void () {cout << "El resultado es" << a << endl; } privado: int a; }; class Second {public: void change (First & yclass, int x) {yclass.a = x; }}; int main () Primero obj1; Segundo obj2; obj1. (); obj2.change (obj1, 5); obj1. (); // Salida El resultado es 0 El resultado es 5

  1. La función de amigo es una función que puede acceder a los miembros privados y protegidos de una clase. Por el contrario, una clase de amigos es una clase que ayuda a acceder a los miembros privados de una clase.
  2. Una función amiga se declara incluyendo su prototipo dentro de la clase, precediéndola con la palabra clave amigo. Del mismo modo, una clase de amigo también se define usando la palabra clave amigo.
  3. La declaración de reenvío se utiliza en el caso de la función de amigo como en contra, no es necesario usarla en la clase de amigo.

Conclusión

Se requiere una función amiga cuando una función necesita acceder a dos o más clases independientes, miembros internos. Por otro lado, se necesita una clase de amigo cuando una clase requiere acceder a los miembros de otra clase. Cuando una función de miembros múltiples necesita ser amiga de esa función, en ese caso, es mejor usar la clase de amigo.