next up previous contents index
Next: Open C++ Up: OATH -- Object-oriented Previous: Exemplos

Conclusões

Os acessores são claramente superiores aos smart pointers, mas são difíceis de declarar, porque todas as funções membro das classes da aplicação têm que ser declaradas na classe do acessor. A utilização de macros pode aliviar significativamente o problema, mas o código fica com um aspecto bastante diferente do de C++ normal, além de que o uso de macros complicadas prejudica as acções de depuração de erros.

Os acessores sofrem de alguns problemas que já afligiam os smart pointers, nomeadamente de conversões do tipo das que se apresentaram acima sob a designação safe, permitindo conversões incorrectas. Este facto é ortogonal ao que se disse acima sobre is, que apenas converte um acessor para outro e advém de se estar a atribuir aos acessores uma semântica definida pelo programador, mas não apoiada pelo compilador, à semelhança do que acontecia com os smart pointers. Enquanto a estes era associada a semântica de ponteiro, aos acessores é associada a semântica de referência.

Não é exigido aos acessores que o seu tipo apresente concordância com do o objecto que encapsula. Isto pode ser uma desvantagem, pois é assim necessário ter mais informação de controlo a eles associada.



David M. M. de Matos
Thu Jun 29 14:58:09 MET DST 1995