Exercícios Resolvidos de Destruidores

Ver Teoria

Enunciado

Um programador está desenvolvendo um sistema de registro de produtos, e você pode ver o código da classe P r o d u t o abaixo. O código contém alguns erros, identifique os erros e escreva uma classe corrigida.

Passo 1

E aí pessoal, beleza? Aqui é o Juan, e vamos lá resolver essa questão!

Aqui não tem segredo, a gente precisa analisar o código e encontrar os erros. Então vamos lá.

Dando uma olhada nas linhas de 01 a 04 o cabeçalho aproveita para importar a < s t r i n g > que será utilizada no restante do código.

Agora vamos olhar a linha 05 onde começamos a nossa classe. De cara, aqui temos o nosso primeiro erro. As classes não recebem parâmetros entre parêntesis!

Passo 2

Seguindo para as linhas 06 a 08 temos a declaração dos atributos da classe. Note que todos estão atributos estão sendo criados em contexto privado, pois este é o padrão quando criamos uma classe no C++.

Mas isso se torna um problema nas linhas 09 a 19, pois os métodos construtor e destrutor devem ser criados em contexto público. Note que este é um erro que pode passar despercebido, pois não gera aviso de erro durante a compilação do programa.

Passo 3

Agora vamos dar uma olhada de perto nos nossos métodos. Da linha 10 a 14 é desenvolvido o construtor, que recebe três parâmetros e utiliza os valores recebidos para preencher os atributos da classe. Aqui não há nenhum erro

Já nas linhas 16 a 19 foi desenvolvido o método destrutor, e aqui temos alguns erros para mencionar.

A própria declaração do método, na linha 16, está errada pois os métodos destrutores não recebem parâmetros, ou seja, os parêntesis devem estar vazios!

Dentro do destrutor uma mensagem é exibida e com isso está tudo certo. Mas na linha 18 temos uma instrução r e t u r n , e o método destrutor não aceita essa instrução.

Com isso a nossa classe está concluída. Mas ainda há mais um erro. Na chave da linha 20 não podemos esquecer do ponto e vírgula ;

Passo 4

Agora vamos as correções!

Pra começar, vamos remover os parêntesis da linha 05, pois não utilizamos parênteses na declaração de classes.

Agora vamos dar uma olhada no construtor e no destruidor. A primeira mudança é tornar os dois métodos públicos, então adicionamos o p u b l i c   na linha 09.

Em seguida, vamos dar atenção ao destruidor. Na linha 16 vamos remover os parâmetros e deixar os parêntesis vazios, e também temos que apagar o comando r e t u r n de dentro do destruidor.

Por último, adicionamos o ponto e vírgula que faltava na linha 20.

E prontinho! Agora corrigimos todos os erros.

Resposta

Linha 05: Parêntesis na classe.

Linha 09: Devemos adicionar um p u b l i c

Linha 16: Funções destrutoras devem ter os parêntesis vazios

Linha 19: Funções destrutoras não devem ter comando r e t u r n

Linha 20: Faltou o ponto e vírgula.