例如:
employee* pe=new manager; typeid(*pe)==typeid(manager) //true |
typeid可以用于作用于各种类型名,对象和内置基本数据类型的实例、指针或者引用,当作用于指针和引用将返回它实际指向对象的类型信息,甚至可用于函数名,真是太强大了。typeid的返回是type_info类型。
type_info类:这个类的确切定义是与编译器实现相关的,下面是MSDN中给出的定义
class type_info { public: virtual ~type_info(); int operator==(const type_info& rhs) const; int operator!=(const type_info& rhs) const; int before(const type_info& rhs) const; const char* name() const; const char* raw_name() const; private: ... }; |
可以用
cout << "int id: " << typeid(int).name() << endl;
cout << "int raw id: " << typeid(int).raw_name() << endl;
cout << "main id: " << typeid(main).name() << endl;
cout << "main raw id: " << typeid(main).raw_name() << endl;
看看有什么输出