unidad 2 clase 11 - p2

10
Unidad 2: CLASES DERIVADAS PROGRAMACIÓN II

Upload: escuela-politecnica-del-ejercito

Post on 22-Jul-2015

174 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Unidad 2   clase 11 - p2

Unidad 2: CLASES DERIVADAS

PROGRAMACIÓN II

Page 2: Unidad 2   clase 11 - p2

Funciones Amigas

Page 3: Unidad 2   clase 11 - p2

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

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

Funciones miembro de una clase como Amiga

Page 6: Unidad 2   clase 11 - p2

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

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

Una clase como Amiga

Page 9: Unidad 2   clase 11 - p2

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

Sintaxis class A { private: int n; public: void ingresar(); friend class B; }; class B { private: int n; public: void imprimir(A &ob); };