next up previous contents
Next: Tratamento de exceções Up: Encapsulação Previous: Sobrecarga de operadores   Sumário


Amizade

Amizade é um mecanismo de C ++ que permite que uma classe autorize acesso de sua parte privativa a outra classe ou função. A palavra chave friend é usada para indicar a autorização de acesso.

Uma função amiga tem tanto privilégio de acesso aos dados de uma classe quanto uma função membro. A maior diferença entre elas é que uma função amiga é usualmente invocada na forma f(x), enquanto que uma função membro é invocada na forma x.f(). Sempre que possível, funções membros devem ser preferidas sobre funções amigas, devendo estas últimas ser reservadas para casos de necessidade ou para clarificar a sintaxe de uso das funções e operadores.

Classes amigas, similarmente, permitem o livre acesso a seus dados privativos entre si. Duas classes que cooperem de perto para a resolução de um problema muitas vezes precisam ser declaradas como amigas. Há casos em que as classes não são combinadas em uma única classe porque têm números distintos de objetos ou tempo de duração diferente; vistas ``de fora'', elas poderiam parecer como uma única classe. Em tais casos, amizade pode ser útil.

Há muita discussão na comunidade de C ++ com relação ao uso de amizade -- se ela fere encapsulação, se deveria ser utilizada ou não. Bom senso é a recomendação neste caso. Já foi visto que esconder informação é uma qualidade. No entanto, se para evitar o uso de funções ou classes amigas é necessário tornar público um dado da classe -- seja através da colocação do dado na seção pública, seja através da inclusão de funções públicas da forma get e set (onde tais funções não fazem sentido para um usuário, mas apenas para a classe que irá utilizá-las) -- então certamente é preferível usar o mecanismo de amizade.


next up previous contents
Next: Tratamento de exceções Up: Encapsulação Previous: Sobrecarga de operadores   Sumário
Ivan Luiz Marques Ricarte 2001-06-01