C++语言的扩充性质

1、template

(1)memberfunctions只有在被使用时,才会被实例化。

(2)注意使用template时,注意针对特定参数时可能有些操作没有定义。

template在被实例化之前只能实施有限的错误检查,有些很简单的错误编译器照样通过。

(3)template之中对于一个nonmembername的决议结果,都是由“scope ofthe template instantiation”来决定,而不是由“scope ofthe template declaration”决定的。前者用以专注于特定的实例;后者用于专注于一般的templateclass。

2、exceptionhandling (EH)

EH中类型描述符是必须的,因为真正的exception是在执行期被处理的,其object必须有自己的类型信息。RTTI正是因为支持EH而获得的副产品。

3、runtimetype identification (RTTI)

dynamic_cast运算符对某个class类型实施时,如果传回真正的地址,表示动态类型被确认;如果传回0,则表示没有指向任何object,意味着应该以另外一种逻辑试行于这个动态类型未确定的object身上。

那为什么一个reference不可以像指针一样将自己设置为0便代表了no object呢?

若将一个reference设置为0,会引起一个临时对象(拥有被参考到的类型)被产生出来,该临时对象的初值为0.这个reference然后被设置为该临时对象的一个别名。因此,当dynamic_cast运算符施行于一个reference身上时,不能够提供对等于指针情况下的true/false。

《深度探索C++对象模型》--7 站在对象模型的尖端相关推荐

  1. C++对象模型学习——站在对象模型的尖端

    2019独角兽企业重金招聘Python工程师标准>>> 这里要讨论三个著名的C++语言扩充性质,它们都会影响C++对象.它们分别是template. exception handli ...

  2. 《深度探索C++对象模型》--5 构造析构拷贝 6 执行期语意学

     <深度探索C++对象模型>--5构造.析构.拷贝语意学 1.纯虚函数: (1)C++可以定义和调用一个纯虚函数,不过只可以静态调用,不可以由虚拟机制调用. 注意:pure virtu ...

  3. 深度探索C++ 对象模型(7)-Data member的布局(虚继承)

    虚拟继承 namespace ObjectMultiDerived {class Point2d {public:// has virtual functionsvirtual void print( ...

  4. 深度探索C++ 对象模型(7)-Data member的布局(多重继承)

    多重继承 namespace ObjectMultiDerived {class Point2d {public:// has virtual functionsvirtual void print( ...

  5. 深度探索C++ 对象模型(7)-Data member的布局(无继承、继承无多态、继承多态、多层继承)

    无继承 继承无多态 继承多态 虚表 : 用来存放基类的每一个虚函数,再加上首位的一个slots(支持RTTI). 每个class object导入一个vptr,提供执行期的链接,使得每一个class ...

  6. 深度探索C++ 对象模型(6)-Data member的存取

    nonstatic data member 需要在class object起始地址加上该member的偏移. class A {public: int x; int y;}; A a; a.y = 0 ...

  7. 深度探索C++ 对象模型(6)-Data member的绑定

    防御性程序设计 1).将class声明起头处放data member; 代码示例: class Point3d{ float x,y,z; public://etc } 2). class的声明处放i ...

  8. 深度探索C++ 对象模型(5)-Initialization list(3)

    四点: 1.list中的项目次序是由class中的members声明次序决定,不是由initialization list中的的代码决定 如下代码有一个陷阱,i值为一个不可预知未初始化的值.原因是按照 ...

  9. 深度探索C++ 对象模型(5)-Initialization list(2)

    Initialization list的作用是效率 如下代码可以编译并运行,但是效率低下 class Word {String _name;int _cnt;public:Word() { _name ...

  10. 深度探索C++ 对象模型(5)-Initialization list(1)

    以下四种情况,一定要使用成员初始化列表: 1.初始化一个引用成员 2.初始化一个const成员 示例代码为 class Shape{const int m_size; //const 常量int &a ...

最新文章

  1. Waiting for target device to come online
  2. Transaction And Lock--锁相关基础
  3. python使用教程cmd啥意思-对python中执行DOS命令的3种方法总结
  4. 关于“粪”,你知道多少?【Feign是个什么玩意儿?】
  5. php 共享内存列队,php中对共享内存,消息队列的操作
  6. 【JQuery】jQuery中的常用方法小结
  7. Mysql字符串连接
  8. Delphi GDI对象之绘制文本
  9. 如何给网站添加支付宝支付功能
  10. linux之SVN安装
  11. redis/memcache监控管理工具——treeNMS
  12. 房屋出租系统(java)
  13. 【转】Windows下部署Appium教程(Android App自动化测试框架搭建)
  14. IT战略规划与企业架构
  15. 想做电商产品经理你先要学会这几件事
  16. C# 实现Excel导出图片
  17. 代码生成器技术乱弹十一,伽罗华理论与代码生成器
  18. 【工具】SMART原则的分析举例注意事项
  19. 2010公司处级聚会尾牙主持词
  20. 虚拟机下 centos7 网络间歇性断网

热门文章

  1. python 模块(Module)和包
  2. java Integer中隐藏的细节魔鬼!来自面试官的三轮暴击!
  3. Java - Get a list of all Classes loaded in the JVM[转]
  4. MYSQL存储过程中 使用变量 做表名--转
  5. kafka 集群--3个broker 3个zookeeper创建实战
  6. AI模型变身文豪:“看懂”新闻报道,命名图片更有文采
  7. 逻辑回归、决策树和支持向量机(I)
  8. oracle删除表中数据_工作表中提供的特定数据在数据库中批量删除的方法
  9. 小工匠聊架构文章一览【不间断持续更新】
  10. Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)