c++ 中 typeid, typeinfo, typeof

C++ 提供的 <typeinfo> 这个头文件保存了一些类型,这些类型和 typeid, dynamic_cast 操作符相关。

1.  std::type_info 这个类型在  <typeinfo> 中定义。 typeid 操作符会返回一个该类型的 const 左值对象。但是这个 std::type_info 把拷贝构造函数设置成 private 的了,因此不能直接获取 std::type_info 对象。 std::type_info 这个类型主要提供了 operator==, operator!= 运算符和name()方法,name()方法会返回一个指示该类型的字符串。可以看出来,这个typeid主要是为了对比两个对象是否从属于一个类。

typeid 的主要用法:

1 class Person;
2 Person Potter;
3 if (typeid(Person) == typeid(Potter))
4     cout << "Equal" << endl;

采用了 const 标识不影响类型,使用 typedef 定义的类型别名也不影响类型。

 2. typeof 和 typeid 不同,typeid 是 c++ 提供的,而 typeof 是编译器提供的(一般指gcc)。有人说 typeof 和 C++11 提供的关键字 decltype 类似。

(未完待续。。。)

posted on 2017-07-21 17:33  daghlny  阅读(15171)  评论(0)    收藏  举报

导航