<<objInfo.hash_code()<<endl; //获取一个类的类型信息 const type_info &baseInfo = typeid(Base); cout<<baseInfo.name()<<" | "<<baseInfo.raw_name()<<" | "<<baseInfo.hash_code()<<endl; //获取一个结构体的类型信息 const type_info &stu
hash_code()<<endl; //获取一个普通类型的类型信息 const type_info &charInfo = typeid(char); cout<<charInfo.name()<<" | "<<charInfo.raw_name()<<" | "<<charInfo.hash_code()<<endl; //获取一个表达式的类型信息 const type_info &expInfo = typeid(20 * 45 / 4.5); cout<<expInfo....
#include<iostream>#include<typeinfo>usingnamespacestd;classBase{};structSTU{};intmain(){//获取一个普通变量的类型信息intn=100;consttype_info&nInfo=typeid(n);cout<<nInfo.name()<<" | "<<nInfo.raw_name()<<" | "<<nInfo.hash_code()<<endl;//获取一个字面量的类型信息consttype_info&dI...
raw_name() 是 VC/VS 独有的一个成员函数,hash_code() 在 VC/VS 和较新的 GCC 下有效。 可以发现,不像 Java、C# 等动态性较强的语言,C++ 能获取到的类型信息非常有限,也没有统一的标准,如同“鸡肋”一般,大部分情况下我们只是使用重载过的“==”运算符来判...
信息const type_info &expInfo = typeid(20 * 45 / 4.5);cout<<expInfo.name()<<" | "<<expInfo.raw_name()<<" | "<<expInfo.hash_code()<<endl;return 0;} 运行结果: int | .H | 529034928 double | .N | 667332678 class Base | .?AVBase@@ | 1035034353...
RTTI的机制是为每个类型产生一个type_info类型的数据,程序员可以在程序中使用typeid随时查询一个变量的类型,typeid就会返回变量相应的type_info数据,而type_info的name成员函数可以返回类型的名字。而在C++11中,又增加了hash_code这个成员函数,返回该类型唯一的哈希值,以供程序员对变量的类型随时进行比较。具体如下例:...
通过 typeid 返回的 type_info 对象我们可以获得需要 hash_code。 1 2 node a, b; // initialize a, b a.output_type(0) == b.input_type(1); // check whether a's first output can match b's second input 这是一个超级简化的版本,我们知道 C++ 的函数传递参数的时候如果返回 int32 传递给...
raw_name() 是 VC/VS 独有的一个成员函数,hash_code() 在 VC/VS 和较新的 GCC 下有效。 可以发现,不像Java、C#等动态性较强的语言,C++ 能获取到的类型信息非常有限,也没有统一的标准,如同“鸡肋”一般,大部分情况下我们只是使用重载过的“==”运算符来判断两个类型是否相同。
并不能保证对同一类型的typeid表达式的所有评估都会引用相同的 std::type_info 对象,尽管它们会比较相等,这些 type_info 对象的 std::type_info::hash_code 将是相同的,它们的 std::type_index 也将相同。 typeid operator - cppreference.com 所以直接使用 typeid 返回的 index 和 info 来做比较开销会相对更...