1. type_info
C++的多态是面向对象编程的精髓之一, 但是在实际使用和调试中,很难知道一个指针绑定了哪个子类的对象,这被称为RTTI(运行时类型识别)。常常是读着读着代码,读到了一个 p->func() 就不知道到底在哪里实现的了。这时候type_info 和 typeid就派上用场了,它可以知道指针具体指向的类型,注意这只在多态的时候有用,也就是说基类没有虚函数这个方法会失效。
type_info类在头文件<typeinfo>
中定义,代表了一个C++类型的相关信息。一般由typeid操作符返回,不能自己构造。
type_info有下列方法:
name(),返回类型的名字
hash_code(),返回这个类型的哈希值(具有唯一性)
before(),可以判断一个type_info对象的顺序是否在另一个之前(实现相关,同一个程序多次调用都可能不一样,不太理解有什么实际作用)
==和!=操作符,判断两个type_info相等或不等
typeid操作符
typeid操作符在<typeinfo>
中声明,用来在运行时获取类型、变量、表达式的类型信息,适用于C++基础类型、内置类、用户自定义类、模板类等。
它有两种形式:
- typeid( 类型 )
- typeid(