0Pricing
C++ Academy · Lección

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;  // int

decltype(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 references

Cuá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

  1. auto, decltype y deducción de tipos
  2. Range-based for, nullptr y enum class
  3. Expresiones lambda: captura, mutable y genéricas
  4. Asignaciones estructuradas e if-init en C++17
← Volver a C++ Academy