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