Gerencie recursos com RAII
Use o tempo de vida dos objetos e ponteiros inteligentes em vez de posse manual.
- Explicar o RAII e escolher entre valores,
std::unique_ptre posse compartilhada.
O RAII (resource acquisition is initialization, ou aquisição de recurso é inicialização) liga o tempo de vida de um recurso ao tempo de vida de um objeto. Quando o objeto sai de escopo, o destrutor dele libera os recursos que ele possui, inclusive durante o desempilhamento de uma exceção. Prefira valores comuns e contêineres padrão. Use std::unique_ptr para posse dinâmica exclusiva e std::shared_ptr só quando a posse for de fato compartilhada; ponteiros brutos e referências costumam ser visões sem posse.
1#include <iostream>
2#include <memory>
3
4int main() {
5 auto score = std::make_unique<int>(100);
6 std::cout << *score << "\n";
7}100
std::unique_ptr não pode ser copiado, porque só deve haver um dono; a posse pode ser transferida com std::move. Na maior parte do código de aplicações, um vector ou uma string locais são mais simples do que alocar um array bruto com new.
Principais conclusões
Prefira primeiro valores e contêineres padrão.
Use o RAII para ligar a liberação ao tempo de vida do objeto.
Prefira a posse única, a menos que a posse compartilhada seja necessária.
Quiz da aula
5 perguntas · aprovação com 4 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em C++
Escreva C++20 no editor e execute com entradas de exemplo. O GCC 14 compila o código pelo Compiler Explorer, um serviço público gratuito; seu código-fonte e a entrada de teste são enviados para lá.
Seja dono de um valor com um ponteiro inteligente
Crie um int com std::make_unique, leia um valor substituto para ele e imprima Value: N. Não use new bruto.
- Substitua o valor
Seu código é compilado como C++20 com gcc 14 (-Wall -Wextra) e executado no Compiler Explorer (godbolt.org), um serviço público gratuito.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…