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 类似。

(未完待续。。。)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM