C++ Obtener tipo de variable

Namita Chaudhary 12 octubre 2023
  1. C++ Obtener tipo de variable
  2. Utilice el operador typeid para encontrar el tipo de una variable en C++
  3. Utilice el especificador decltype() para encontrar el tipo de una variable en C++
  4. Conclusión
C++ Obtener tipo de variable

Este artículo explorará los diferentes métodos para encontrar el tipo de datos de una variable en el C++ estándar.

C++ Obtener tipo de variable

Hay escenarios en los que necesitamos encontrar el tipo dinámico o el tipo en tiempo de ejecución de las variables en C++. Por lo tanto, las bibliotecas de C++ nos han proporcionado diferentes métodos para encontrar el tipo de una variable.

Uno de los métodos es utilizar el operador typeid, que está presente en la biblioteca <typeinfo> de C++. Sin embargo, se ha introducido el otro en C++11, conocido como decltype(x), que convierte una expresión en un tipo del resultado producido.

En las versiones anteriores de C++, cada tipo de datos debe declararse explícitamente en tiempo de compilación; sin embargo, en las versiones más nuevas, existe una función para la deducción automática de los tipos de datos en una expresión que se conoce como inferencia de tipo. El operador decltype() también proporciona la facilidad de deducción automática de los tipos de datos en una expresión.

Sin embargo, discutiremos cada uno de los métodos en detalle en este artículo.

Utilice el operador typeid para encontrar el tipo de una variable en C++

El operador typeid está presente en la biblioteca <typeinfo> de C++ y se utiliza para encontrar el tipo de variable proporcionado en tiempo de ejecución. Sin embargo, la función completa utilizada para encontrar el tipo de variable es typeid(x).name(), donde x es la variable cuyo tipo se debe encontrar.

La función miembro name() utilizada devuelve una secuencia de caracteres que identifica el tipo de la variable.

Sin embargo, devolverá las iniciales del tipo de datos como salida. Por ejemplo, para int, devolverá i, para float f, y para double, devolverá d como tipo.

Veamos el código usando el operador typeid en C++ para encontrar el tipo de una variable.

#include <iostream>
#include <typeinfo>
using namespace std;

int main() {
  int x = 200;
  float y = 200.790;
  cout << typeid(x).name() << endl;
  cout << typeid(y).name() << endl;
  cout << typeid(x * y).name() << endl;
  return 0;
}

Producción :

i
f
f

El resultado anterior muestra que i se refiere al tipo integer, mientras que f se refiere al tipo float. Además, el typeid en C++ también se usa para devolver el tipo de una expresión.

En el ejemplo anterior, la expresión que se pasa en el operador typeid es la multiplicación de los dos tipos de datos diferentes, int y float; por lo tanto, el resultado se convertirá al tipo de datos más grande.

Utilice el especificador decltype() para encontrar el tipo de una variable en C++

El especificador decltype(x) se introdujo con C++11. Es un operador que se utiliza para obtener el tipo de la expresión resultante.

La palabra clave auto se usa para declarar una variable con un tipo particular, mientras que decltype extrae ese tipo de variable. Tanto auto como decltype se basan en la inferencia de tipo que hace referencia a la deducción automática de los tipos de datos.

Veamos un ejemplo del uso del operador decltype para encontrar el tipo de variable en C++.

#include <bits/stdc++.h>

#include <cstring>
using namespace std;

float function1() { return 4.5; }
int function2() { return 34; }
int main() {
  decltype(function1()) a;
  decltype(function2()) b;

  cout << typeid(a).name() << endl;
  cout << typeid(b).name() << endl;

  return 0;
}

Producción :

f
i

Los tipos de datos de las variables a y b en el ejemplo anterior serán los mismos que el tipo de retorno de función1 y función2.

A continuación se muestra otro ejemplo del operador decltype, en el que extrae el tipo de la expresión en C++.

#include <bits/stdc++.h>
using namespace std;

int main() {
  float ft = 4.8;
  decltype(ft) a = ft + 9.8;
  cout << typeid(a).name();
  return 0;
}

Producción :

f

La salida f se refiere al tipo de datos float. Por tanto, tras añadir la expresión ft+9.8, el tipo de dato resultante será float.

Sin embargo, una diferencia importante entre los operadores typeid y decltype es que typeid proporciona información sobre el tipo en tiempo de ejecución, mientras que decltype proporciona información sobre el tipo en tiempo de compilación.

Conclusión

En este artículo, hemos discutido cómo obtener el tipo de una variable en C++. Hemos discutido dos métodos diferentes; uno es usar el typeid(x).name(), que proporciona el tipo en tiempo de ejecución, mientras que el otro es decltype(x), que proporciona el tipo en tiempo de compilación.

Sin embargo, ambos métodos son eficientes y fáciles de usar.

Artículo relacionado - C++ Type