Оператор typeid
Оператор typeid возвращает объект типа std::type_info,
который содержит информацию о типе выражения или типа.
Оператор принимает в качестве параметра либо выражение,
либо имя типа. Результат работы оператора можно сравнить
с другим type_info с помощью операторов == и !=,
а также получить имя типа с помощью метода name.
Синтаксис
typeid(expression)
typeid(type)
Пример
Давайте получим информацию о типе переменной
x и выведем имя этого типа:
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
int x = 42;
cout << typeid(x).name() << endl;
return 0;
}
Результат выполнения кода:
"i"
Пример
Давайте сравним типы двух переменных с помощью
оператора typeid и оператора ==:
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
int a = 1;
double b = 2.0;
int c = 3;
if (typeid(a) == typeid(c)) {
cout << "a and c have the same type" << endl;
}
if (typeid(a) != typeid(b)) {
cout << "a and b have different types" << endl;
}
return 0;
}
Результат выполнения кода:
"a and c have the same type"
"a and b have different types"
Пример
Давайте получим информацию о типе указателя и разыменованного значения:
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
int x = 42;
int* p = &x;
cout << typeid(p).name() << endl;
cout << typeid(*p).name() << endl;
return 0;
}
Результат выполнения кода:
"Pi"
"i"
Пример
Давайте проверим тип выражения с помощью
оператора typeid и имени типа:
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
int x = 42;
if (typeid(x) == typeid(int)) {
cout << "x is int" << endl;
}
return 0;
}
Результат выполнения кода:
"x is int"
Смотрите также
-
оператор
sizeof,
который возвращает размер типа в байтах -
оператор
decltype,
который определяет тип выражения -
оператор
auto,
который автоматически выводит тип переменной -
оператор
static_assert,
который проверяет условие во время компиляции