auto, decltype e dedução de tipos
Deixe o compilador deduzir os tipos com auto e decltype para escrever código mais claro
auto, decltype e dedução de tipos é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 1 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.
Dedução de tipos no C++ moderno
Desde o C++11, o compilador pode deduzir tipos em muitos lugares. Isso torna o código mais curto e menos propenso a erros — quando usado com bom senso.
A palavra-chave auto
auto deduz o tipo a partir do inicializador em tempo de compilação. A variável ainda tem um tipo fixo e conhecido estaticamente.
auto i = 42; // int
auto d = 3.14; // double
auto s = "hello"; // const char*
auto v = std::vector<int>{1,2,3}; // std::vector<int>auto e const
Por padrão, auto descarta const e referências de nível superior. Adicione-os explicitamente quando quiser preservá-los.
const int n = 10;
auto a = n; // int (const dropped)
const auto& b = n; // const int&auto com iteradores
Os nomes dos tipos de iterador são longos. auto é especialmente útil aqui.
std::map<std::string, int> ages = {{"Ada", 30}};
auto it = ages.find("Ada");
// vs std::map<std::string,int>::iterator it = ...for baseado em intervalo e auto
Use auto& para percorrer os elementos sem copiá-los.
for (const auto& [name, age] : ages) {
std::cout << name << ": " << age << "\n";
}Tipos de retorno à direita
As funções podem usar auto como marcador do retorno, com uma seta ao final especificando o tipo — algo útil para modelos.
auto add(int a, int b) -> int {
return a + b;
}Dedução do tipo de retorno no C++14
O C++14 permite tipos de retorno simples com auto — o compilador deduz o tipo a partir da instrução de retorno.
auto multiply(double x, double y) {
return x * y; // deduced as double
}decltype: obtendo o tipo de uma expressão
decltype(expr) fornece o tipo de expr em tempo de compilação. Diferentemente de auto, ele preserva referências e const.
int x = 0;
int& r = x;
decltype(r) ref = x; // int&
decltype(x) val = 0; // intdecltype(auto)
Combina a dedução com as regras de decltype — preserva o tipo exato da expressão, incluindo a categoria de valor.
auto a = some_func(); // copy
decltype(auto) b = some_func(); // exact type, including referencesQuando evitar auto
Evite auto quando o tipo deduzido não for óbvio — literais numéricos grandes, cálculos mistos ou tamanhos específicos da plataforma. Seja explícito para facilitar a leitura.
Estilo de uso quase sempre de auto
Alguns guias de estilo recomendam auto para todas as variáveis, a fim de evitar conversões silenciosas. Outros preferem tipos explícitos. Escolha uma convenção e aplique-a de forma consistente.
Verificação rápida
Qual é a diferença entre auto e decltype(auto) ao retornar uma referência?
Recapitulação
auto deduz os tipos a partir dos inicializadores; decltype informa o tipo de uma expressão; decltype(auto) faz a dedução preservando as referências. Use-os para reduzir o excesso de código — mas mantenha a legibilidade.
Perguntas Frequentes
A aula “auto, decltype e dedução de tipos” é grátis?
Sim — o texto completo de “auto, decltype e dedução de tipos” é 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 “auto, decltype e dedução de tipos”?
Deixe o compilador deduzir os tipos com auto e decltype para escrever código mais claro 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 1 de 4.
Quanto tempo leva a aula “auto, decltype e dedução de tipos”?
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
- auto, decltype e dedução de tipos
- for baseado em intervalos, nullptr e enum class
- Expressões lambda: captura, mutable e genéricas
- Associações estruturadas e if-init no C++17