Além disso, o ponteiro automático é o ponteiro inteligente. É preciso um ponteiro bruto, envolve -o e garante que a memória apontada pelo ponteiro bruto seja liberada de volta sempre que o objeto de ponteiro automático sai do escopo, a qualquer momento um ponteiro automático pode apontar para um objeto. Portanto, sempre que um ponteiro automático é atribuído a outro ponteiro automático, a propriedade é transferida para a instância do ponteiro automático que recebeu a tarefa. O mesmo acontecerá quando um ponteiro automático for copiado.
Os ponteiros automáticos são os mesmos que o ponteiro único ou podemos dizer que o ponteiro único é a nova versão do ponteiro automático. Quando o objeto é declarado usando o ponteiro automático, ele armazenará o ponteiro em um único objeto que garante que sempre que o ponteiro saia do escopo, o objeto para o qual está apontando seja automaticamente destruído.
Sintaxe
A sintaxe para declarar um ponteiro automático é mostrado abaixo:
std :: auto_ptrNa sintaxe acima "P" está o objeto de ponteiro automático que declaramos onde o "tipo" é o tipo de dados que o ponteiro P conterá. E usando a nova palavra -chave, alocamos a pilha de memória para o número inteiro que queremos armazenar nela.
Exemplo # 01:
Para entender o funcionamento do ponteiro automático em detalhes, realizaremos um exemplo no qual declararemos um ponteiro automático e exibiremos o local da memória ao qual será referenciado. Agora, vamos para o nosso código, onde todo o processo será realizado da criação para a alocação de memória. Primeiro incluiremos nosso arquivo de cabeçalho o "iostream" e o segundo "memória". O "iostream" é o pacote da biblioteca que permite ao codificador executar várias operações de entrada e saída. Considerando que a biblioteca de “memória” é a que envolve a alocação da heap de memória. Fora da função principal, declaramos duas classes de objetos. O primeiro é nomeado "AutoPointer", que será chamado usando um ponteiro automático. Dentro do objeto "AutoPointer", criamos uma função pública chamada "show ()".
O objetivo de usar a palavra -chave pública é torná -la acessível para todas as funções dentro do código. Em nossa função show (), exibimos uma mensagem de criação de ponteiro, sempre que o ponteiro for criado para o objeto "AutoPooTer", ele exibirá a mensagem. A segunda classe de objeto é chamada "AutoPointer2" que criamos para o nosso segundo ponteiro automático para o qual também passamos a declaração "cout" exibindo a mensagem de "Second_ptr criado".
Agora, movendo -se para a função principal que retorna o tipo inteiro. Primeiro declaramos um ponteiro automático para um objeto do tipo "AutoPointer" chamado "First_Ptr". Usando a nova palavra -chave, alocamos a pilha de memória para o objeto "AutoPointer" na próxima linha do nosso código que chamamos de função de show usando o ponteiro de "primeiro_ptr". Nisso, usamos o operador de seta “->”, em C ++, nos permite acessar os elementos dos objetos. Eles são usados com as variáveis de ponteiro que estão apontando para a classe de objeto. Quando a função Show é chamada usando o "First_PTR", ele exibirá a mensagem "First_Ptr criada" então, usando o método get () que é fornecido para obter o local da memória ou os dados armazenados em um heap de memória. Mas, no nosso caso, estaremos recebendo o endereço onde a pilha de memória onde o "First_Ptr" é alocado.
Depois de exibir o local "First_Ptr", criaremos outro ponteiro automático chamado "Second_Ptr" do tipo de objeto "AutoPointer2". Novamente, usando o novo ponteiro, reservamos o local da memória para ele. Agora, mudando para a próxima linha, estamos usando a função "Second_Ptr" que chamamos de "show ()" que criamos para o objeto "AutoPointer2". Uma coisa a lembrar é quando declaramos um ponteiro automático para algum objeto, ele terá a função do objeto de classe para o qual criamos o ponteiro. Não terá a função da outra classe de objeto, seja eles tendo os mesmos nomes. Como no nosso caso nas duas classes de objetos, criamos as mesmas funções chamadas "show ()". Depois disso, usando o método get (), acessamos o heap de memória usando o "Second_ptr", onde o segundo ponteiro "segundo_ptr" é armazenado. No final do código, retornamos o valor nulo, o que significa que o programa será executado com sucesso sem ter nenhum erro e estará executando a tarefa desejada para a qual se destina a.
#incluirAgora, vamos verificar a saída que obtivemos como resultado do código que escrevemos que é exibido no trecho acima. Como podemos ver nesta saída, exibimos a mensagem de criação de ponteiro para ambos os nossos ponteiros de automóveis. O local da memória para ambos os ponteiros foi exibido sem nenhum erro.
Conclusão
Neste tutorial, demonstramos o comportamento interno do ponteiro automático. O ponteiro automático foi introduzido em C ++ 3. Usando exemplos e cenários, explicamos brevemente para facilitar a compreensão do trabalho e da metodologia de como ela é usada. Os ponteiros automáticos são preteridos por causa de sua propriedade. É a propriedade de uma maneira que dois ponteiros ao mesmo tempo não podem ter o mesmo objeto.