C++ Obtenir le type de variable

Namita Chaudhary 12 octobre 2023
  1. C++ Obtenir le type de variable
  2. Utilisez l’opérateur typeid pour trouver le type d’une variable en C++
  3. Utilisez le spécificateur decltype() pour trouver le type d’une variable en C++
  4. Conclusion
C++ Obtenir le type de variable

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.