C++ Academy · Aula

Referências const e quando usá-las

Passe objetos grandes de forma eficiente e segura com referências const

Aula 3 de 413 etapas

Referências const e quando usá-las é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

O que uma referência const promete

Uma const T& diz: "Não modificarei aquilo a que me refiro." O compilador impõe essa regra.

void print(const std::string& s) {
    // s.clear();   // ERROR: s is const
    std::cout << s;
}

Por que não passar simplesmente por valor

Copiar objetos grandes é desperdício. Uma referência const é praticamente gratuita (internamente, é apenas um ponteiro) e nunca permite que a função modifique os dados de quem a chamou.

Vinculação a qualquer coisa

Uma referência const pode ser vinculada a valores l, valores r e temporários, tornando-se o tipo de parâmetro mais permissivo para acesso somente para leitura.

void f(const std::string& s);
std::string a = "hi";
f(a);                 // lvalue
f("hello");           // temporary string
f(std::move(a));      // rvalue

Extensão do tempo de vida

Vincular um temporário a uma referência const estende o tempo de vida do temporário até o tempo de vida da referência. É útil para construção em linha.

const std::string& greeting = "Hello, " + name;
// the concatenated string lives as long as `greeting`

Quando NÃO usar referência const

Para tipos que podem ser copiados trivialmente (int, double, pointer), passe por valor. A referência acrescenta uma indireção sem trazer nenhum benefício.

Referência const em for baseado em intervalo

O laço canônico somente para leitura. Evita tanto cópias quanto mutações acidentais.

for (const auto& x : container) {
    process(x);
}

Retorno de uma referência const

Retorne uma referência const quando o resultado for um objeto existente que quem chamou não deve modificar, como um membro ou um valor armazenado em cache.

class Person {
    std::string name_;
public:
    const std::string& name() const { return name_; }
};

Correção no uso de const

Marque como const todo parâmetro e toda função-membro que não modifique o estado. O compilador detectará escritas acidentais, oferecendo uma proteção poderosa.

Funções-membro const

Uma função-membro marcada como const após a lista de parâmetros não pode modificar o objeto. Ela é chamada em instâncias const.

class Counter {
    int n_ = 0;
public:
    int value() const { return n_; }   // pure reader
    void increment() { n_++; }
};

Armadilha: const_cast remove const

Você pode remover const com const_cast, mas fazer isso em um objeto que originalmente era const resulta em comportamento indefinido. Use-o apenas ao interagir com interfaces legadas que não usam const.

mutable para estado interno

A palavra-chave mutable permite que uma função-membro const modifique membros específicos, o que é útil para armazenamento em cache ou mecanismos de exclusão mútua.

class Cache {
    mutable std::mutex mtx_;
    mutable std::optional<int> cached_;
public:
    int value() const {
        std::lock_guard<std::mutex> lk(mtx_);
        // ...
    }
};

Verificação rápida

Por que geralmente é melhor escrever const std::string& do que std::string para um parâmetro?

Recapitulação

Use const T& para parâmetros somente para leitura, valores de retorno de funções de acesso e laços baseados em intervalo. Para tipos não triviais, é mais rápido que a passagem por valor e mais seguro que referências não const.

Grátis para começar

Aprenda C++ com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
51
Aulas
203

Perguntas Frequentes

A aula “Referências const e quando usá-las” é grátis?

Sim — o texto completo de “Referências const e quando usá-las” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Referências const e quando usá-las”?

Passe objetos grandes de forma eficiente e segura com referências const Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C++ Academy?

Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Referências const e quando usá-las”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C++ Academy?

Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Por que as referências são aliases de variáveis
  2. Passagem por valor versus passagem por referência
  3. Referências const e quando usá-las
  4. Tempo de vida de referências e referências pendentes
← Voltar para C++ Academy