• Martes 21 de Mayo de 2024, 03:42

Autor Tema:  Como Funcionan Las Funciones Friend????  (Leído 1172 veces)

Pollitopensativo

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Como Funcionan Las Funciones Friend????
« en: Viernes 24 de Septiembre de 2004, 18:53 »
0
como funcionan las funciones friend... lo se como concepto pero no se como aplicarlo ...grax  :lightsabre:  :lightsabre:  :smartass:  :smartass:  :smartass:

Diodo

  • Moderador
  • ******
  • Mensajes: 658
    • Ver Perfil
    • http://www.solocodigo.com
Re: Como Funcionan Las Funciones Friend????
« Respuesta #1 en: Viernes 24 de Septiembre de 2004, 19:23 »
0
Wenas  :hola:

Funciones amigas de una clase
El siguiente ejemplo ilustra el concepto de amistad, aunque en este programa no es funcionalmente útil. Para que una función sea amiga de una clase, y por tanto tenga acceso a la parte privada de los objetos de dicha clase, sabe ser definida como amiga (anteponiendo la palabra friend al prototipo) en la declaración de la clase. Lógicamente, es la clase la que define quién es amiga suya. Se observa que la función Ver no tiene que indicar en ningún momento quien la considera amiga, de tal forma que podríamos tener millares de clases amigas de dicha
función sin que por ello esta vea afectada su definición. Cada una de las clases sin embargo deberá incluir dentro de su declaración la copia del prototipo de la función precedida de la palabra friend.

Código: Text
  1.  
  2.  
  3. #include <iostream>
  4. class A
  5. {
  6. public:
  7. A(int i) {a=I;};
  8. void Ver() { cout << a << endl; }
  9. private:
  10. int a;
  11. friend void Visualiza(A); // "Ver" es amiga de la clase A
  12. };
  13. // La función Visualiza puede acceder a miembros privados
  14. // de la clase A, ya que ha sido declarada "amiga" de A
  15. void Visualiza(A Xa)
  16. {
  17. cout << Xa.a << endl;
  18. }
  19. void main()
  20. {
  21. A Na(10);
  22. Visualiza(Na); // imprime el valor de Na.a
  23. Na.Ver(); // Equivalente a la anterior
  24. }
  25.  
  26.  
  27.  

Se observa como la función visualiza es capaz de acceder directamente al miembro privado a, del objeto Na gracias a su condición de función amiga de la clase. Si en este mismo ejemplo eliminásemos la línea de la declaración de la clase A en la que se define Visualiza como función amiga, el compilador daría un error por intentar acceder a un miembro privado del objeto pasado en Xa.

Un saludo

Pollitopensativo

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Como Funcionan Las Funciones Friend????
« Respuesta #2 en: Viernes 24 de Septiembre de 2004, 19:28 »
0
Lo acabo de probar con una funcion en un programa que estoy haciendo y me quedo claro grax...