<<objInfo.hash_code()<<endl; //获取一个类的类型信息 const type_info &baseInfo = typeid(Base); cout<<baseInfo.name()<<" | "<<baseInfo.raw_name()<<" | "<<baseInfo.hash_code()<<endl; //获取一个结构体的类型信息 const type_info &stuInfo = typeid(struct STU); cout<<st...
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...
#include <iostream>#include <typeinfo>using namespace std;class Base{ };struct STU{ };int main(){//获取一个普通变量的类型信息int n = 100;const type_info &nInfo = typeid(n);cout<<nInfo.name()<<" | "<<nInfo.raw_name()<<" | "<<nInfo.hash_code()<<endl;//获取一个字面量的...
raw_name() 是 VC/VS 独有的一个成员函数,hash_code() 在 VC/VS 和较新的 GCC 下有效。 可以发现,不像 Java、C# 等动态性较强的语言,C++ 能获取到的类型信息非常有限,也没有统一的标准,如同“鸡肋”一般,大部分情况下我们只是使用重载过的“==”运算符来判...
通过 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 传递给...
不保证同一类型上的 typeid 表达式的所有求值都指代同一个 std::type_info 对象,不过这些 type_info 对象的 std::type_info::hash_code 相同,它们的 std::type_index 也相同。 const std::type_info& ti1 = typeid(A); const std::type_info& ti2 = typeid(A); assert(&ti1 == &ti2); // 不...
RTTI的机制是为每个类型产生一个type_info类型的数据,程序员可以在程序中使用typeid随时查询一个变量的类型,typeid就会返回变量相应的type_info数据,而type_info的name成员函数可以返回类型的名字。而在C++11中,又增加了hash_code这个成员函数,返回该类型唯一的哈希值,以供程序员对变量的类型随时进行比较。具体如下例:...
hash_code()); // 保证 assert(std::type_index(ti1) == std::type_index(ti2)); // 保证 示例 该示例展示使用一种实现时的输出,其中 type_info::name 返回完整类型名;若使用 gcc 或相似者则须通过 c++filt -t 过滤。 运行此代码 #include <iostream> #include <string> #include <typeinfo> ...
cout<<()<<" | "<<charInfo.raw_name()<<" | "<<charInfo.hash_code()<<endl; //获取一个表达式的类型信息 const type_info &expInfo = typeid(20 * 45 / 4.5); cout<<()<<" | "<<expInfo.raw_name()<<" | "<<expInfo.hash_code()<<endl; ...