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 类似。
(未完待续。。。)