本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!