心有

知其所以然,方可大道至简。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
typeid操作符:它指出指针或引用指向的对象的实际派生类型。

例如:

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;
看看有什么输出
posted on 2005-11-19 00:36  心有  阅读(997)  评论(0编辑  收藏  举报