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相关推荐

  1. C++ Primer 5th笔记(chap 19 特殊工具与技术)异常类层次

    1. 类 exception . bad_cast 和 bad_alloc 定 义 了 默 认 构 造 函 数 runtime_error 和 logic_error没有默认构造函数, 但是有一个可以 ...

  2. C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid运算符

    1. typeid运算符(typeid operator) 它允许程序向表达式提问:你的对象是什么类型? typeid表达式的形式是typeid(e),其中e可以是任意表达式或类型的名字,它操作的结果 ...

  3. C++ Primer 5th笔记(chap 19 特殊工具与技术)运行时类型识別RTTI

    1. 运行时类型识别(run-time type identification ) 当我们将这两个运算符用于某种类型的指针或引用, 并且该类型含有虚函数时, 运算符将 使用指针或引用所绑定对象的动态类 ...

  4. C++ Primer 5th笔记(chap 19 特殊工具与技术)type_info 类

    1. type_info 的操作 操作 描述 t1 == t2 如果type_info对象t1和t2表示同一种类型,则返回true t1 != t2 如果type_info对象t1和t2表示不同的类型 ...

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

    1. RTTI用处 当想为具有继承关系的类实现相等运算符时.对于两个对象来说,如果他们的类型相同并且对应的数据成员取值相同,则我们说这两个类是相等的. class Base {friend bool ...

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

    1. 定位 new (placement new) 1.1 起因 内存分配和初始化分离开 Placement new allows you to construct an object in memo ...

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

    void *operator new (size_t size) {if (void *mem = malloc (size) )return mem;elsethrow bad_alloc ( ); ...

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

    1. new void operator new (size_t, void ) ;//不允许重新定义这个版本 string *sp = new string("a value") ...

  9. C++ Primer 5th笔记(chap 19 特殊工具与技术)链接指示: extern “C“

    1. C++程序有时需要调用其他语言编写的函数, C++使用链接指示( linkage directive)指出任意非 C++函数所用的语言 1.1 声明一个非C++函数 // 可能出现在 C++头文 ...

最新文章

  1. 洛谷 P4284 [SHOI2014]概率充电器 解题报告
  2. elasticsearch 6.6 安装(CentOS 7.5) 修订
  3. spring service ,controller反向代理生成AOP代理类流程
  4. 去中心化钱包CoinU诞生 黑客攻不破的铜墙铁壁
  5. python概述_Python-概述
  6. 鼻塞用鼻喷剂-调研(成分+刺激性)
  7. java 持续集成工具_Jenkins-Jenkins(持续集成工具)下载 v2.249.2官方版--pc6下载站
  8. SpringBoot热加载实现与类加载浅谈
  9. SQL Server Compact 3.5开发环境说明
  10. BlogEngine.NET 1.5的BlogProvider、DbBlogProvider
  11. 2014腾讯实习生笔试题——define与typedef
  12. window MFC桌面下雪程序
  13. 【C语言】详解 calloc() 函数
  14. markdown文档管理工具
  15. r语言图形怎么保存到c盘,图像 – 将R中的图保存为GIF
  16. (一)Yocto的介绍
  17. 关于 IO、存储、硬盘和文件系统
  18. 1024程序员节!!
  19. 使用手机或电脑远程连接windows自带的远程桌面
  20. 当前目录./和父目录../辨析

热门文章

  1. 多线程:一些好的编程建议
  2. Android --- 百度地图 SDK v3.6.0 以上版本找不到 PoiOverlay 类
  3. org.hibernate.transientobjectexception:The given object has a null identifier: com.gxuwz.check.entit
  4. html的li浮动之后往下移动,多个li浮动后居中显示问题
  5. JAVA控件属性列表_Gradle获取项目属性列表
  6. 组织应该采用集中式发电机吗?
  7. 漫画|解读电气安全“十不准”
  8. 本质矩阵svd分解_SVD推荐系统
  9. 成功解决在Eclipse中出现的can not find declarration to go to
  10. TF版本升级问题:成功解决AttributeError: module tensorflow has no attribute mul