stringtranslate.com

Función de amigo

En la programación orientada a objetos , una función amiga , es decir un "amigo" de una clase dada , es una función a la que se le da el mismo acceso que a los métodos a datos privados y protegidos . [1]

Una función amiga es declarada por la clase que otorga acceso, por lo que las funciones amigas son parte de la interfaz de la clase, como los métodos. Las funciones amigas permiten una sintaxis alternativa para usar objetos, por ejemplo f(x)en lugar de x.f(), o g(x,y)en lugar de x.g(y). Las funciones amigas tienen las mismas implicaciones en la encapsulación que los métodos.

Un concepto similar es el de clase amiga .

Casos de uso

Este enfoque se puede utilizar en funciones amigables cuando una función necesita acceder a datos privados en objetos de dos clases diferentes. Esto se puede lograr de dos maneras similares:

// Implementación en C++ de funciones amigas. #include <iostream> using namespace std ; class Foo ; // Declaración adelantada de la clase Foo para, por ejemplo, compilar.      clase Bar { privado : int a = 0 ; público : void show ( Bar & x , Foo & y ); amigo void show ( Bar & x , Foo & y ); // declaración de amigo global }; clase Foo { privado : int b = 6 ; público : amigo void show ( Bar & x , Foo & y ); // declaración de amigo global amigo void Bar ::show ( Bar & x , Foo & y ); // declaración de amigo de otra clase }; // Definición de una función miembro de Bar; este miembro es un amigo de Foo void Bar::show ( Bar & x , Foo & y ) { cout << "Mostrar a través de la función miembro de Bar" << endl ; cout << "Bar::a = " << x . a << endl ; cout << "Foo::b = " << y . b << endl ; } // Amigo de Bar y Foo, definición de función global void show ( Bar & x , Foo & y ) { cout << "Mostrar mediante función global" << endl ; cout << "Bar::a = " << x . a << endl ; cout << "Foo::b = " << y . b << endl ; } int main () { Bar a ; Foo b ; show ( a ,b ); a . mostrar (                                                                                                        a , b ); }

Referencias

  1. ^ Holzner, Steven (2001). C++: Black Book . Scottsdale, Arizona: Coriolis Group. pág. 397. ISBN. 1-57610-777-9Cuando declaras una función como amiga de una clase, esa función tiene acceso a los miembros de datos internos de ese objeto (es decir, sus miembros de datos protegidos y privados).

Enlaces externos