Exercícios Resolvidos de Destruidores

Ver Teoria

Enunciado

Explique o programa abaixo, e diga qual será a saída do programa.

Passo 1

Vamos lá, pessoal.

A questão ta pedindo pra gente ler e interpretar o programa.

A primeira coisa que devemos perceber é a presença da classe T e s t e s . Dentro dessa classe foi declarado um ponteiro para float p n t , e ela possui apenas dois métodos, um construtor e um destrutor.

Vamos dar uma olhada nesse construtor, linhas 07 a 10, a primeira instrução é a impressão de uma mensagem na tela, linha 08. A segunda coisa a ser feita é a alocação dinâmica de um array de 10 posições, linha 09. Em resumo, o construtor da classe cria um vetor dinâmico.

Agora vamos dar atenção ao destrutor, linhas 11 a 14. Ele é bem similar ao construtor da classe, na primeira instrução é impressa uma mensagem, e a segunda instrução é responsável por liberar a memória alocada através do ponteiro.

A gente já debulhou a classe, agora vamos ver o que acontece na m a i n ( ) .

Na primeira linha da m a i n ( ) é criado um ponteiro p n t _ O b j e t o s do tipo T e s t e s , linha 18. E logo em seguida esse ponteiro é utilizado para alocar 5 objetos do tipo T e s t e s .

Lembre-se que assim que um objeto é criado o construtor entre em ação. O nosso construtor imprime uma mensagem. Ou seja, na linha 20 são instanciados dinamicamente 5 objetos da classe T e s t e s , logo, nesse exato momento a mensagem “Criando um objeto” é impressa 5 vezes seguidas.

Bem legal! Então vamos continuar.

Na linha 22 a memória alocada dinamicamente é liberada, e nesse momento o destruidor é ativado. E olha só, o destruidor também imprime uma mensagem, então para cada um dos 5 objetos destruídos será impressa a mensagem “Destruindo um objeto”.

E o programa acaba. Então se a gente rodar o programa vamos ter algo desse tipo:

Resposta

Ei, a resposta está no passo a passo :)