C++ Obtenir le type de variable
- C++ Obtenir le type de variable
-
Utilisez l’opérateur
typeid
pour trouver le type d’une variable en C++ -
Utilisez le spécificateur
decltype()
pour trouver le type d’une variable en C++ - Conclusion
Cet article explore les différentes méthodes de recherche du type de données d’une variable dans le C++ standard.
C++ Obtenir le type de variable
Il existe des scénarios où nous devons trouver le type dynamique ou le type au moment de l’exécution des variables en C++. Par conséquent, les bibliothèques C++ nous ont fourni différentes méthodes pour trouver le type d’une variable.
Une des méthodes consiste à utiliser l’opérateur typeid
, qui est présent dans la bibliothèque <typeinfo>
de C++. Cependant, l’autre a été introduit en C++11, connu sous le nom de decltype(x)
, qui convertit une expression en un type du résultat produit.
Dans les anciennes versions de C++, chaque type de données doit être explicitement déclaré au moment de la compilation ; cependant, dans les versions plus récentes, il existe une fonction de déduction automatique des types de données dans une expression appelée inférence de type. L’opérateur decltype()
offre également la possibilité de déduire automatiquement les types de données dans une expression.
Cependant, nous discuterons de chacune des méthodes en détail dans cet article.
Utilisez l’opérateur typeid
pour trouver le type d’une variable en C++
L’opérateur typeid
est présent dans la bibliothèque <typeinfo>
de C++ et permet de trouver le type de variable fourni à l’exécution. Cependant, la fonction complète utilisée pour trouver le type de la variable est typeid(x).name()
, où x
est la variable dont le type doit être trouvé.
La fonction membre name()
utilisée renvoie une séquence de caractères qui identifie le type de la variable.
Cependant, il renverra les initiales du type de données en sortie. Par exemple, pour int
, il retournera i
, pour float
f
, et pour double
, il retournera d
comme type.
Voyons le code utilisant l’opérateur typeid
en C++ pour trouver le type d’une 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;
}
Production:
i
f
f
La sortie ci-dessus montre que i
fait référence au type integer
, tandis que f
fait référence au type float
. De plus, le typeid
en C++ est aussi utilisé pour retourner le type d’une expression.
Dans l’exemple ci-dessus, l’expression passée dans l’opérateur typeid
est la multiplication des deux types de données différents, int
et float
; par conséquent, le résultat sera converti dans le type de données plus grand.
Utilisez le spécificateur decltype()
pour trouver le type d’une variable en C++
Le spécificateur decltype(x)
a été introduit avec C++11. C’est un opérateur utilisé pour obtenir le type de l’expression résultante.
Le mot-clé auto
est utilisé pour déclarer une variable avec un type particulier, tandis que le decltype
extrait ce type de variable. Les deux auto
et decltype
sont basés sur l’inférence de type qui fait référence à la déduction automatique des types de données.
Voyons un exemple d’utilisation de l’opérateur decltype
pour trouver le type 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;
}
Production:
f
i
Les types de données des variables a
et b
dans l’exemple ci-dessus seront les mêmes que le type de retour de function1
et function2
.
Un autre exemple de l’opérateur decltype
est ci-dessous, dans lequel il extrait le type de l’expression 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;
}
Production:
f
La sortie f
fait référence au type de données float
. Par conséquent, après avoir ajouté l’expression ft+9.8
, le type de données résultant sera float
.
Cependant, une différence majeure entre les opérateurs typeid
et decltype
est que le typeid
fournit les informations sur le type à l’exécution, tandis que le decltype
fournit les informations sur le type au moment de la compilation.
Conclusion
Dans cet article, nous avons expliqué comment obtenir le type d’une variable en C++. Nous avons discuté de deux méthodes différentes; l’une consiste à utiliser le typeid(x).name()
, qui fournit le type à l’exécution, tandis que l’autre est le decltype(x)
, qui fournit le type au moment de la compilation.
Cependant, ces deux méthodes sont efficaces et faciles à utiliser.