Unidad 2 clase 11 - p2
-
Upload
escuela-politecnica-del-ejercito -
Category
Education
-
view
174 -
download
3
Transcript of Unidad 2 clase 11 - p2
![Page 1: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/1.jpg)
Unidad 2: CLASES DERIVADAS
PROGRAMACIÓN II
![Page 2: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/2.jpg)
Funciones Amigas
![Page 3: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/3.jpg)
Definiciones
• Los datos miembro declarados como privados dentro de la clase, pueden ser manipulados por las funciones amigas.
• Las funciones amigas pueden declararse tanto en la sección privada como pública dentro de la clase (recomendado en la sección pública).
• Una función externa declarada como amiga de una clase es una función no miembro.
![Page 4: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/4.jpg)
Sintaxis
class nombre_clase { private: int n; void ingresar(); public: friend void imprimir(nombre_clase &ob); }; Llamada a función void main() { nombre_clase obj; imprimir(obj); }
![Page 5: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/5.jpg)
Funciones miembro de una clase como Amiga
![Page 6: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/6.jpg)
Definiciones
• La definición de la clase A, tiene una función que va a ser amiga de la clase B.
• Se requiere de una declaración por adelantado (forward) de la clase B.
• La clase B recibe como parámetro el objeto de la clase A.
• Se debe declarar la función amiga con el nombre completo de la clase a la que pertenece.
![Page 7: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/7.jpg)
Sintaxis class A; // declaración forward class B { private: int n; public: void imprimir(A &ob); //uso de clase A como parámetro }; class A { private: int n; public: friend void B::imprimir(A &ob); //declaración completa }; void B::imprimir(A &obj) { ………. }
![Page 8: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/8.jpg)
Una clase como Amiga
![Page 9: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/9.jpg)
Definiciones
• Una clase puede ser amiga en la totalidad de otra clase.
• Cada función miembro de la clase amiga es amiga de la otra clase.
![Page 10: Unidad 2 clase 11 - p2](https://reader035.fdocumento.com/reader035/viewer/2022071721/55af1b441a28ab42028b471b/html5/thumbnails/10.jpg)
Sintaxis class A { private: int n; public: void ingresar(); friend class B; }; class B { private: int n; public: void imprimir(A &ob); };