typeid
是 C++ 的一个关键字,用于动态类型获取。typeid
运算符与 RTTI(运行时类型信息)密切相关,它返回一个指向 std::type_info
对象的引用,该对象表示了表达式的类型。使用 typeid
时,需要注意以下几个方面:
-
需要 #include <typeinfo> 头文件:
要使用typeid
,应在代码中包含<typeinfo>
头文件。 -
对多态类型的支持:
当typeid
应用于多态类型(即至少包含一个虚函数的类)的对象时,如果对象是通过基类类型的指针或引用来检查的,typeid
将评估对象的动态类型。如果对象不是多态的,typeid
将返回其静态类型。 -
引用和指针:
当typeid
应用于指针时,它返回指针本身的类型,而不是指针所指向的对象的类型。同样,对于引用,typeid
返回引用的类型。 -
对数组的处理:
当typeid
应用于数组时,它不会返回数组的元素类型,而是返回整个数组的类型,包括数组的大小。例如,typeid(int[10])
与typeid(int[20])
将返回不同的类型。 -
对函数的处理:
当typeid
应用于函数时,如果函数具有相同的参数类型和返回类型,无论它们的名称或定义如何,typeid
都将返回相同的类型。 -
与 const 和 volatile 限定符的关系:
typeid
运算符会忽略类型的const
和volatile
限定符。例如,typeid(const int)
和typeid(int)
将返回相同的类型。 -
性能问题:
使用typeid
可能会影响程序的性能,因为它可能需要在运行时进行类型检查。因此,在性能敏感的应用中,应谨慎使用。 -
对空指针的处理:
如果typeid
的操作数是一个空指针,它将抛出一个std::bad_typeid
异常。
总之,typeid
是一个强大的工具,正确使用需要注意上述几个方面,以避免潜在的错误和性能问题。
更进一步地,可参见下列文章,详细介绍typeid
相关的要点:
标签:返回,typeid,int,C++,关键字,数组,类型,指针 From: https://www.cnblogs.com/lucky-bubble/p/18324697/notes-on-cpp-typeid-keyword