gjr_rj
(usa Debian)
Enviado em 17/02/2008 - 04:58h
Você não é obrigado a instaciar os objetos no construtor. Você pode instanciá-los a hora que quiser, como você fez. Dependendo da classe B você não precisa criar um ponteiro para poder instanciá-la e dependendo, precisa. Ou seja, tem tipos que precisam ser instanciados e outros que já o são na declaração da variável. O que precisa ser instanciado pode ser instanciado a qualquer momento. Neste caso o problema não é instanciar e sim destri-lo.
Você pode dificultar o código sem ter o retorno desejado ou até cometer erro.
Por exemplo, se você instanciar algo no construtor é só destrui-lo no destrutor estará correto praticamente sem possibilidade de cometer erro. Porém se você instancia em outro momento, no destrutor terá que saber se ele está instanciado ou não o que torna o código mais perigoso. E quando chamar o método instanciará B ou B já está instanciado? É a primeira vez ou não? Novamente estaremos deixando o código perigoso.
Se o metodo que instancia B for chamado logo no início teremos acrescentado códigos perigosos sem melhorar nada, a não ser que instancie e destrua a todo o momento, diminuindo o desempenho com um: instancia, destroi, instancia, destroi ..., além, é claro de deixar o código mais perigoso ainda.
Resumindo, instanciar um objeto não precisa ser no construtor, mas tem que se pensar bastante pois pode ser uma escolha que irá piorar o desenpenho além de deixar o código mais perigoso (sujeito a erro).
Espero ter respondido sua pergunta. Caso contrário poste aqui a dúvida novamente.