Referências const e quando usá-las
Passe objetos grandes de forma eficiente e segura com referências const
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)); // rvalueExtensã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.
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
- Por que as referências são aliases de variáveis
- Passagem por valor versus passagem por referência
- Referências const e quando usá-las
- Tempo de vida de referências e referências pendentes