typeid功能
时间: 2024-02-17 18:01:22 浏览: 66
`typeid` 是 C++ 中的一个运算符,用于获取一个对象或类型的 `type_info` 类型的信息。`type_info` 类型是 C++ 标准库中的一个类,用于存储类型信息(如类型名称、是否为基本类型、是否为数组等)。
`typeid` 运算符可以用于以下两种情况:
1. 获取对象的类型信息:`typeid(object)` 返回一个 `const std::type_info&` 类型的引用,表示对象 `object` 的类型信息。
2. 获取类型的类型信息:`typeid(type)` 返回一个 `const std::type_info&` 类型的引用,表示类型 `type` 的类型信息。
例如,以下程序演示了如何使用 `typeid` 运算符获取对象和类型的类型信息:
```cpp
#include <iostream>
#include <typeinfo>
int main()
{
int a = 10;
float b = 3.14;
std::string c = "Hello, world!";
const std::type_info& typeA = typeid(a);
const std::type_info& typeB = typeid(b);
const std::type_info& typeC = typeid(c);
const std::type_info& typeInt = typeid(int);
const std::type_info& typeFloat = typeid(float);
const std::type_info& typeString = typeid(std::string);
std::cout << "Type of a: " << typeA.name() << std::endl;
std::cout << "Type of b: " << typeB.name() << std::endl;
std::cout << "Type of c: " << typeC.name() << std::endl;
std::cout << "Type of int: " << typeInt.name() << std::endl;
std::cout << "Type of float: " << typeFloat.name() << std::endl;
std::cout << "Type of string: " << typeString.name() << std::endl;
return 0;
}
```
该程序将输出各个变量和类型的类型信息。注意,`type_info::name()` 方法返回的是一个指向类型名称的 `const char*` 类型的指针,但具体的实现方式和返回值可能因编译器而异。
阅读全文