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++ 能获取到的类型信息非常有限,也没有统一的标准,如同“鸡肋”一般,大部分情况下我们只是使用重载过的“==”运算符来判断两个类型是否相同。
标签:info,typeid,类型信息,int,关键字,Base,type From: https://www.cnblogs.com/kbqlm/p/17572018.html