typeid 运算符获取对象的静态类型信息,返回 type_info 对象,其中包含类型名、大小、对齐、基础类、修饰符等信息。可通过 name()、before()、base() 等方法访问对象信息。

C++ 中 typeid 的用法
typeid 运算符是一个 C++ 关键字,用于获取对象的静态类型信息。它返回一个 type_info 对象,该对象包含有关对象类型的各种信息。
用法:
typeid 运算符后面跟一个表达式,该表达式表示要获取其类型信息的表达式。表达式可以是:
立即学习“C++免费学习笔记(深入)”;
- 变量
- 表达式
- 函数返回类型
- 类型别名
语法:
typeid(expression) // 其中 expression 是要获取其类型信息的表达式
返回值:
typeid 运算符返回一个 type_info 对象,其中包含有关对象类型的以下信息:
- 类型名
- 类型大小
- 类型对齐
- 类型派生信息
- 类型基础信息
- 类型 modifier 信息
- 类型修饰信息
可以通过以下方法访问 type_info 对象中的信息:
- name():返回类型名
- before() 和 after():从派生类中获取基础类和从基础类中获取派生类
- base():返回直接基础类
- grow() 和 shrink():修改类型名称中的数组大小
- modifier():返回类型修饰符
示例:
int main() {
int x;
std::string s;
std::cout << typeid(x).name() << std::endl; // 输出:int
std::cout << typeid(s).name() << std::endl; // 输出:std::__cxx11::basic_string
return 0;
} 注意事项:
- typeid 运算符只能用于静态类型信息。它不能用于获取对象的运行时类型信息。
- typeid 运算符的结果可能因编译器和平台而异。
- typeid 运算符的开销很小,但频繁使用它可能会降低性能。











