Ponteiros (também frequentemente chamados em alemão pela palavra inglesa “Pointer”) são um recurso fundamental do C++. Uma maneira de perceber isso é que quase todo livro para iniciantes em C++ já trata de dicas em um dos primeiros capítulos. Freqüentemente, são exemplos simples que podem ser facilmente programados sem ponteiros. A questão permanece por que eles são necessários.
Resumo
- Os ponteiros são um recurso fundamental do C++ e são abordados nos primeiros capítulos dos livros para iniciantes.
- Usar ponteiros diretamente é perigoso e deve ser evitado, a menos que não haja outra opção.
- Ponteiros são necessários para usar memória alocada dinamicamente e são importantes para programação orientada a objetos.
- O polimorfismo em C++ funciona apenas com ponteiros ou referências e requer uma compreensão de classes, objetos e herança.
- Mostra como criar um novo objeto e atribuí-lo a um ponteiro e como liberar memória para evitar vazamentos de memória.
- Os ponteiros são uma parte fundamental do C++ e são muito necessários para uma programação séria orientada a objetos.
Evite dicas, se possível
Uma coisa adiantada: usar ponteiros diretamente é perigoso e pode ocasionalmente levar a erros, mesmo para programadores experientes. Só por esse motivo, você só deve usar ponteiros se não houver outra opção. Para tipos de dados padrão (Inteiro, Booleano, Duplo, …) geralmente você não precisará de ponteiros.
Gerenciamento de memória
Ponteiros são necessários para usar memória alocada dinamicamente. O operador new retorna um ponteiro digitado apropriadamente que aponta para a área de memória recém-criada. Os ponteiros são, portanto, essenciais para uma programação orientada a objetos limpa. No entanto, este é um capítulo que ainda é bastante inadequado para iniciantes e pode ser deixado de lado com segurança no início.
Ponteiros e polimorfismo
O polimorfismo em C++ funciona apenas com ponteiros ou referências. Basicamente, trata-se do fato de que um objeto de uma classe mais especial (derivada) pode ser escondido atrás de um ponteiro de uma classe base. Estas também são técnicas muito avançadas que requerem compreensão de classes, objetos e herança.
Criando um novo objeto e atribuindo-o a um ponteiro
// Create a new object on the heap and retrieve pointer to it
CExampleClassBase* myObject = new CExampleClassDerived ;
// Use o operador '->' para chamadas de função através de ponteiro
meuObjeto->Imprimir ;
// Free memory
delete myObject;
myObject = NULL; // NULL maybe replaced by 'nullptr' since C++11
O trecho de código acima demonstra como criar um novo objeto usando o operador new. O resultado é um ponteiro atribuído a myObject. Em C++ isso só funciona com ponteiros. Observe que o ponteiro se refere à classe base, mas na verdade ainda contém a versão derivada (CExampleClassDerived) com todas as suas propriedades.
Como já mencionado, este polimorfismo só é possível com ponteiros ou referências. É claro que a memória criada no heap também deve ser liberada em um local apropriado com exclusão, caso contrário teríamos produzido um vazamento de memória. O ponteiro é então definido como NULL (nullptr pode ser usado no C++ 11) para que a memória não seja mais acessada acidentalmente.
Conclusão
Ponteiros são uma parte fundamental do C++ e, portanto, são absolutamente necessários para programação séria, especialmente se você realmente usa C++ de maneira orientada a objetos (o que deveria).
Você não entende o uso de um ponteiro em um trecho de código específico? Não tem problema, envie-nos um e-mail com o código relevante e sua dúvida relacionada. Nós vamos ajudar você!
O artigo foi útil para você? Se sim, ajude-nos e compartilhe!
FAQ: Perguntas frequentes
Ponteiros, também conhecidos como “ponteiros”, são um recurso fundamental do C++. Eles permitem acesso a endereços de memória e manipulação de dados.
Os ponteiros são abordados nos primeiros capítulos dos livros para iniciantes em C++ porque desempenham um papel importante na linguagem de programação. É importante entender seu conceito e aplicação.
Usar ponteiros diretamente pode ser perigoso e levar a erros, especialmente para programadores inexperientes. É aconselhável usar ponteiros somente quando não houver outra opção.
Ponteiros são necessários para usar memória alocada dinamicamente. Eles permitem o gerenciamento eficiente de memória e são importantes para a programação orientada a objetos em C++.
Sim, os ponteiros são uma parte fundamental do C++. Eles são muito necessários para programação orientada a objetos séria e devem ser usados em aplicações apropriadas.