auto, decltype y deducción de tipos
Deje que el compilador deduzca los tipos con auto y decltype para escribir código más limpio.
auto, decltype y deducción de tipos es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.
Deducción de tipos en C++ moderno
Desde C++11, el compilador puede deducir tipos en muchos contextos. Esto hace que el código sea más corto y menos propenso a errores, si se usa con criterio.
La palabra clave auto
auto deduce el tipo a partir del inicializador en tiempo de compilación. La variable sigue teniendo un tipo fijo conocido estáticamente.
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 y const
De forma predeterminada, auto elimina el const de nivel superior y las referencias. Añádalos explícitamente cuando los necesite.
const int n = 10;
auto a = n; // int (const dropped)
const auto& b = n; // const int&auto con iteradores
Los nombres de los tipos de iterador son largos. Aquí es donde auto resulta especialmente útil.
std::map<std::string, int> ages = {{"Ada", 30}};
auto it = ages.find("Ada");
// vs std::map<std::string,int>::iterator it = ...for basado en rango y auto
Use auto& para iterar sin realizar copias.
for (const auto& [name, age] : ages) {
std::cout << name << ": " << age << "\n";
}Tipos de retorno finales
Las funciones pueden usar auto como marcador del tipo de retorno y especificar el tipo mediante una flecha final; resulta práctico para las plantillas.
auto add(int a, int b) -> int {
return a + b;
}Deducción del tipo de retorno en C++14
C++14 permite usar tipos de retorno auto sin más; el compilador los deduce a partir de la instrucción return.
auto multiply(double x, double y) {
return x * y; // deduced as double
}decltype: obtener el tipo de una expresión
decltype(expr) produce el tipo de expr en tiempo de compilación. A diferencia de auto, conserva las referencias y el const.
int x = 0;
int& r = x;
decltype(r) ref = x; // int&
decltype(x) val = 0; // intdecltype(auto)
Combina la deducción con las reglas de decltype y conserva el tipo exacto de la expresión, incluida su categoría de valor.
auto a = some_func(); // copy
decltype(auto) b = some_func(); // exact type, including referencesCuándo evitar auto
Evite auto cuando el tipo deducido no sea evidente, por ejemplo, con literales numéricos grandes, cálculos mixtos o tamaños específicos de la plataforma. Sea explícito para mejorar la legibilidad.
Estilo de usar auto casi siempre
Algunas guías de estilo recomiendan usar auto para todas las variables a fin de evitar conversiones silenciosas. Otras prefieren tipos explícitos. Elija una convención y aplíquela de forma coherente.
Comprobación rápida
¿Cuál es la diferencia entre auto y decltype(auto) al devolver una referencia?
Repaso
auto deduce los tipos a partir de los inicializadores; decltype informa del tipo de una expresión; decltype(auto) deduce el tipo y conserva las referencias. Úselos para reducir el ruido, pero mantenga la legibilidad.
Preguntas frecuentes
¿La lección «auto, decltype y deducción de tipos» es gratis?
Sí — el texto completo de «auto, decltype y deducción de tipos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.
¿Qué aprenderé en «auto, decltype y deducción de tipos»?
Deje que el compilador deduzca los tipos con auto y decltype para escribir código más limpio. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C++ Academy?
No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «auto, decltype y deducción de tipos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C++ Academy?
Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- auto, decltype y deducción de tipos
- Range-based for, nullptr y enum class
- Expresiones lambda: captura, mutable y genéricas
- Asignaciones estructuradas e if-init en C++17