关键字 typeid
typeid 运算符用来获取一个表达式的类型信息。
ypeid 会把获取到的类型信息保存到一个 type_info 类型的对象里面,并返回该对象的常引用;当需要具体的类型信息时,可以通过成员函数来提取。
格式如下:
typeid(数据类型) 或
typeid(表达式)
type_info类的几个成员函数:
name() 用来返回类型的名称
raw_name() 用来返回名字编码(Name Mangling)算法产生的新名称
hash_code() 用来返回当前类型对应的 hash 值
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int num1 = 6; float num2 = 2.1; double num3 = 42.324; const type_info &num1_info = typeid(num1); const type_info &num2_info = typeid(num2); const type_info &num3_info = typeid(num3); const type_info &num4_info = typeid(20*6/1.0); cout << num1_info.name() << endl; cout << num2_info.name() << endl; cout << num3_info.name() << endl; // 输出表达式 cout << num4_info.name() << endl; return 1; } 输出: i f d d
类型的比较
char *str; int a = 2; int b = 10; float f;
类的比较
class Base{}; class Derived: public Base{}; Base obj1; Base *p1; Derived obj2; Derived *p2 = new Derived; p1 = p2;
注:C++ 能获取到的类型信息非常有限,也没有统一的标准,如同“鸡肋”一般,大部分情况下我们只是使用重载过的“==”运算符来判断两个类型是否相同。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通