sábado, 9 de enero de 2016

Funciones y Clases Amigas

Una función friend (amiga) de una clase se define fuera del alcance de la clase, pero tiene derechos de acceso a los miembros privados de la clase. Una función o una clase completa puede declararse como función friend de otra clase.
Al utilizar funciones amigas podemos aumentar el rendimiento. Los objetos de la clase iteradora se utilizan para seleccionar sucesivamente elementos o realizar una operación con elementos de un objeto de una clase contenedora. Los objetos de la clase contenedora son capaces de almacenar elementos. Con frecuencia, el uso de amigas es apropiado cuando las funciones miembro no pueden utilizarse para ciertas operaciones.
Para declarar una función como amiga de una clase, anteceda la palabra reservada friend al prototipo de la función en la definición de la clase. Para declarar la ClaseDos como amiga de la ClaseUno, coloque una declaración de la  forma: friend class ClaseDos; en la definición de ClaseUno.
Aunque los prototipos para las funciones amigas aparecen en la definición de la clase, las amigas no son funciones miembro. Los conceptos private, protected, y public de acceso a miembros no son relevantes para las declaraciones de amistad, de modo que este tipo de declaraciones pueden colocarse en cualquier parte de la definición de la clase.
Inmediatamente después del encabezado del clase coloque las declaraciones  de amistad, y no las anteceda con algún especificador de acceso a miembros.
La amistad se gana, no se toma, es decir, para que la clase B sea una amiga de la clase A, la clase A debe declarar de manera explícita que la clase B en una amiga. Además, la amistad no es mi simétrica ni transitiva, si la clase A es amiga de la clase B, y la clase B es amiga de la clase C, no se puede inferir que la clase B es amiga de la clase A, que la clase es amiga de la clase B o que la clase A es amiga de la clase C.









No hay comentarios:

Publicar un comentario