在面向对向中,我们时常会遇到一种情况:一个基类类型的指针或引用想知道它具体是哪种子类型。
格式:typeid(type),这里的type即可是变量,也可是类型名。因此这里可进行相等性判断。
typeid(type).name()将返回具体的类型字符串,对于类类型,并且包含一个或多个虚拟函数,返回的类型是指针所指真正对象类型。
这里一定要区分指针和引用,指针和类类型。
如*p和&r,typeid(p)和typeid(*p),只有typeid(*p)当p是带虚函数的基类才会返回子类类型。
typeid(r)和typeid(&r),只有typeid(r)当r是对带虚函数的基类的引用才会返回子类类型