10.5.4  操作符typeid

10.5.4 操作符 typeid

typeid操作符使程序能够询问某表达式的类型。

typeid操作符的表达式为:

978-7-111-51399-5-Chapter10-83.jpg

其中e是任意表达式或者是类型名。

若表达式的类型是“类”类型,并且该类包含一个或多个虚函数,则表达式的动态类型可能不同于它的静态编译类型。例如,若表达式是对基类指针引用,则该表达式的静态编译类型是基类类型;若指针实际指向派生类对象,则typeid操作符将指出表达式的类型是派生类型。

typeid操作符可以与任何类型的表达式一起使用。内置类型的表达式以及常量都可以用作typeid操作符的操作数。若操作数不是“类”类型或者是没有虚函数的类,则typeid操作符指出操作数的静态类型;若操作数是定义至少一个虚函数的“类”类型,则在运行时计算类型。

typeid操作符的结果为type_info的标准库类型的对象引用。要使用类type_info,必须包含库头文件<typeinfo>。

typeid最常见的用途是比较两个表达式的类型,或者将表达式的类型与特定类型相比较。