C++ Obtener tipo de variable
- C++ Obtener tipo de variable
-
Utilice el operador
typeid
para encontrar el tipo de una variable en C++ -
Utilice el especificador
decltype()
para encontrar el tipo de una variable en C++ - Conclusión
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.