1. typeid运算符(typeid operator)

它允许程序向表达式提问:你的对象是什么类型?

typeid表达式的形式是typeid(e),其中e可以是任意表达式或类型的名字,它操作的结果是一个常量对象的引用。它可以作用于任意类型的表达式。

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

Derived *dp = new Derived;
Base *bp = dp;if (typeid(*bp) == typeid(*dp)) {// bp和dp指向同一类型的对象
}if (typeid(*bp) == typeid(Derived)) {// bp实际指向Derived对象
}

1.2 当typeid作用于指针时(而非指针所指向的对象),返回的结果是该指针的静态编译时类型

// 下面的检查永远是失败的:bp的类型是指向Base的指针
if (typeid(bp) == typeid(Derived)) {// 永远不会执行
}

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 特殊工具与技术)运行时类型识別RTTI

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

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

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

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

    1. 通常情况下使用 typeid 比较两条表达式的类型是否相同或者比较一条表达式的类型是否与指定的类型相同 Derived *dp = new Derived; Base *bp = dp; // ...

  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. py3提取json指定内容_python3 取页面指定数据(json)
  2. Bootstrap3 栅格系统-媒体查询
  3. 对对象类型和调用方法属性进行存储以提升反射性能
  4. python自定义修饰器_Python概述
  5. poj 3074 Sudoku
  6. 教师计算机技术培训内容,2019教师计算机培训计划
  7. 我的毕业设计后端技术栈
  8. 两种方法求x的n次幂
  9. 华为HCIE云计算认证备考通过心得
  10. cad延伸快捷键_CAD绘图大师都在用的46组快捷键,高效绘图必备
  11. 用手机怎么看服务器里的文件,手机查看云服务器文件
  12. 【Day1.4】奢华的海滨酒店,打发半天时间不成问题
  13. 经济学家―狗屎―GDP
  14. HTML和CSS实现京东首页(html和css详解)
  15. 同步机构应遵循哪些基本准则
  16. 小学计算机打字比赛教案,打字比赛活动方案
  17. 暴力破解练习(一)信用卡号的验证
  18. 深入浅出Linux操作系统权限管理与网络配置(三)
  19. css中用rgba设置颜色三光色
  20. 机器学习学习笔记 --- 标称型数据和数值型数据

热门文章

  1. js基础--获取浏览器当前页面的滚动条高度的兼容写法
  2. IDC数据中心机房该如何节能
  3. 一体化机柜在县级支行机房标准化建设中的应用
  4. 成功解决AttributeError: module ‘seaborn‘ has no attribute ‘lvplot‘
  5. ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)
  6. 成功解决‘pip‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
  7. 成功解决NameError: name 'file' is not defined
  8. TF之DCGAN:基于TF利用DCGAN测试MNIST数据集并进行生成过程全记录
  9. 在Hyperopt框架下使用XGboost与交叉验证
  10. Scrapy八小时快速入门第一小时:安装,创建与执行我们的Scrapy爬虫