C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid相关的知识,希望对你有一定的参考价值。

1. 通常情况下使用 typeid 比较两条表达式的类型是否相同或者比较一条表达式的类型是否与指定的类型相同

Derived *dp = new Derived;
Base *bp = dp;   // 两个指针都指向Derived对象
 
// 在运行时比较两个对象的类型
if (typeid(*bp) == type(*dp)) {
    // bp和dp指向通医药类型对象 
}

-对数组a执行typeid(a)。所得的结果是数组类型而非指针类型。

1.1 typeid作用于对象,因此我们使用*bp而不是bp。

if (typeid(*bp) == typeid(Derived)) {
	//@ bp 实际指向 Derived 对象
}

1.2 typeid 作用于指针时,返回的结果是该指针的静态编译时类型

// 下面检查永远失败: bp类型是指向Base的指针
if (typeid(bp) == typeid(Derived)) {
    // 此处代码永远不会执行
}
  • 如果 p 是一个空指针, 则 typeid( *p)将抛出一个名为 bad_typeid的异常。

以上是关于C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer 5th笔记(chap 19 特殊工具与技术)malloc 函数与 free 函数

C++ Primer 5th笔记(chap 19 特殊工具与技术)控制内存分配

C++ Primer 5th笔记(chap 19 特殊工具与技术)使用 RTTI

C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid

C++ Primer 5th笔记(chap 19 特殊工具与技术)定位 new 表达式

C++ Primer 5th笔记(chap 19 特殊工具与技术)成员函数指针