Exercícios Resolvidos de Ponteiros com classes e objetos

Ver Teoria

Enunciado

Crie uma classe que receba um valor inteiro do usuário e guarde este valor em uma variável alocada dinamicamente. A alocação dinâmica só deve ocorrer depois que o usuário inserir o valor desejado.

Passo 1

Vamos nessa, galerinha.

A questão tem um enunciado bem direto. Pra gente ter uma variável alocada dinamicamente, nós vamos precisar declarar um ponteiro dentro da nossa classe. Para evitar que o ponteiro seja usado fora da classe, esse ponteiro deverá ser privado.

Vamos precisar de um método que receba o valor do usuário, efetue a alocação dinâmica, e depois guarde o valor recebido dentro do espaço alocado.

Já que o ponteiro é privado, vamos precisar de um método g e t t e r que retorne o valor contido no espaço alocado.

E por último, e muito importante, a gente precisa de uma forma de deletar o espaço alocado quando ele deixar de ser útil. Então vamos precisar de um método que delete o espaço alocado.

Passo 2

Então vamos começar. Primeiro de tudo, vamos iniciar a nossa classe, que vamos chamar de D i n a m i c a

E dentro do contexto privado vamos declarar um ponteiro para inteiro chamado p n t V a r . Para criar um ponteiro dentro de uma classe é só a gente fazer do mesmo jeito que faria com um ponteiro qualquer:

t i p o * n o m e P o n t e i r o ;

No código fica:

Esse ponteiro vai ser utilizado no momento de alocar memória dinamicamente.

Vamos continuar a desenvolver a classe no próximo passo.

Passo 3

Agora vamos trabalhar os métodos.

Vamos mudar o contexto para público e começar um método que vai receber um valor inteiro do usuário e guardar esse valor em um espaço dinâmico na memória.

Dentro dessa função vamos começar alocando o espaço do tipo inteiro utilizando o operador n e w

E depois que o espaço estiver alocado, podemos armazenar o valor inserido no espaço. Pra isso, vamos acessar o espaço alocado através do ponteiro:

Passo 4

Lembre-se que o ponteiro que criamos é privado. Então precisamos de um método para acessar o valor armazenado dentro do ponteiro. Vamos então criar um método getter.

Esse getter vai simplesmente retornar o valor contido no ponteiro p n t V a r . Cuidado pra não esquecer do operador   * , pois é ele que acessa o valor contido no endereço de memória.

Passo 5

A gente tá trabalhando com uma variável alocada dinamicamente com o operador n e w . Então não podemos esquecer de que vamos precisar deletar o espaço alocado em algum momento.

Vamos criar uma função que vai ser responsável por isso. Essa função não precisa retornar nada, e nem precisa receber parâmetros. Porém, quando a função for chamada ela vai aplicar o d e l e t e sobre o ponteiro, para liberar o espaço alocado.

E com isso a classe está pronta, e a questão concluída!

Resposta