C++ Variablentyp abrufen
- C++-Variablentyp abrufen
-
Verwenden Sie den Operator
typeid
, um den Typ einer Variablen in C++ zu finden -
Verwenden Sie den Spezifizierer
decltype()
, um den Typ einer Variablen in C++ zu finden - Fazit
In diesem Artikel werden die verschiedenen Methoden zum Auffinden des Datentyps einer Variablen im Standard-C++ untersucht.
C++-Variablentyp abrufen
Es gibt Szenarien, in denen wir den dynamischen Typ oder den Typ zur Laufzeit der Variablen in C++ finden müssen. Daher haben uns die C++-Bibliotheken verschiedene Methoden zur Verfügung gestellt, um den Typ einer Variablen zu finden.
Eine der Methoden ist die Verwendung des Operators typeid
, der in der Bibliothek <typeinfo>
von C++ vorhanden ist. Der andere wurde jedoch in C++11 eingeführt, bekannt als decltype(x)
, der einen Ausdruck in einen Typ des erzeugten Ergebnisses umwandelt.
In den älteren Versionen von C++ muss jeder Datentyp explizit zur Kompilierzeit deklariert werden; in den neueren Versionen gibt es jedoch eine Möglichkeit zur automatischen Ableitung der Datentypen in einem Ausdruck, der als Typinferenz bezeichnet wird. Der Operator decltype()
bietet auch die Möglichkeit, die Datentypen in einem Ausdruck automatisch abzuleiten.
In diesem Artikel werden wir jedoch jede der Methoden im Detail besprechen.
Verwenden Sie den Operator typeid
, um den Typ einer Variablen in C++ zu finden
Der Operator typeid
ist in der Bibliothek <typeinfo>
von C++ vorhanden und wird verwendet, um den zur Laufzeit bereitgestellten Variablentyp zu finden. Die vollständige Funktion zum Finden des Variablentyps ist jedoch typeid(x).name()
, wobei x
die Variable ist, deren Typ gefunden werden soll.
Die verwendete Elementfunktion name()
gibt eine Zeichenfolge zurück, die den Typ der Variablen identifiziert.
Als Ausgabe werden jedoch die Initialen des Datentyps zurückgegeben. Beispielsweise wird für int
i
, für float
f
und für double
d
als Typ zurückgegeben.
Sehen wir uns den Code an, der den Operator typeid
in C++ verwendet, um den Typ einer Variablen zu finden.
#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;
}
Ausgabe:
i
f
f
Die obige Ausgabe zeigt, dass sich i
auf den Typ integer
bezieht, während sich f
auf den Typ float
bezieht. Darüber hinaus wird die typeid
in C++ auch verwendet, um den Typ eines Ausdrucks zurückzugeben.
Im obigen Beispiel ist der im Operator typeid
übergebene Ausdruck die Multiplikation der beiden unterschiedlichen Datentypen int
und float
; Daher wird das Ergebnis in den größeren Datentyp konvertiert.
Verwenden Sie den Spezifizierer decltype()
, um den Typ einer Variablen in C++ zu finden
Der Spezifizierer decltype(x)
wurde mit C++11 eingeführt. Es ist ein Operator, der verwendet wird, um den Typ des resultierenden Ausdrucks zu erhalten.
Das Schlüsselwort auto
wird verwendet, um eine Variable mit einem bestimmten Typ zu deklarieren, während das decltype
diesen Variablentyp extrahiert. Sowohl auto
als auch decltype
basieren auf der Typinferenz, die sich auf die automatische Ableitung der Datentypen bezieht.
Sehen wir uns ein Beispiel für die Verwendung des Operators decltype
an, um den Variablentyp in C++ zu finden.
#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;
}
Ausgabe:
f
i
Die Datentypen der Variablen a
und b
im obigen Beispiel sind die gleichen wie die Rückgabetypen von Funktion1
und Funktion2
.
Ein weiteres Beispiel für den Operator decltype
ist unten, in dem er den Typ des Ausdrucks in C++ extrahiert.
#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;
}
Ausgabe:
f
Der Ausgang f
bezieht sich auf den Datentyp float
. Daher ist nach Hinzufügen des Ausdrucks ft+9.8
der resultierende Datentyp float
.
Ein wesentlicher Unterschied zwischen den Operatoren typeid
und decltype
besteht jedoch darin, dass die typeid
die Informationen über den Typ zur Laufzeit bereitstellt, während decltype
die Typinformationen zur Kompilierzeit bereitstellt.
Fazit
In diesem Artikel haben wir besprochen, wie man den Typ einer Variablen in C++ erhält. Wir haben zwei verschiedene Methoden besprochen; Eine besteht darin, die typeid(x).name()
zu verwenden, die den Typ zur Laufzeit bereitstellt, während die andere die decltype(x)
ist, die den Typ zur Kompilierzeit bereitstellt.
Beide Methoden sind jedoch effizient und einfach anzuwenden.