看到《深度探索C++对象模型》的第64页才开始做的笔记,这要是发现书中一个疑惑的地方所以前来和大家探讨一下

  

这是书中对C++中实现多态时内存的布局描述,其中包括两个类ZooAnimal和Bear

class ZooAnimal

{

  ZooAnimal()

  virtual ~ZooAnimal();

  virtual void rotate();

protected:

  int loc;

  String name;

};

class Bear : public ZooAnimal

{

  Bear();

  ~Bear();

  void Rotate();

  virtual void dance();

portected:

  enum Dances { ... }

  Dances dances_kowm;

  int cell_block

}

可见Bear中只有一个虚函数表,此虚函数表在其继承层次最上层

同时我们可以看回书中44页对多态继承C++对象模型的描述

可以看到实现多重继承下虚函数表所在位置只与继承层次最上层的类对象有关,所有各层次中声明的虚函数都在继承层次最上层中虚函数表中可以找到。

PS:有些人可能疑惑在编译器(至少我在vs2012中是这样的)中虚函数表怎么只能看到最上层类中声明的虚函数,实际上虽然我们看不到其他层次上声明的虚函数但它们确实是存在于虚函数表里的。

转载于:https://www.cnblogs.com/kirito/archive/2013/05/25/3099443.html

深度探索C++对象模型读书笔记(1)相关推荐

  1. 深度探索C++对象模型读书笔记-第六章执行期语意学

    在函数中,编译器会帮助将析构函数(Destructor) 安插在相应的位置.对于函数中的局部对象,会将析构函数安插在对象的每一个离开点. 例如: 1: void Function(int a) { 2 ...

  2. 深度探索c++对象模型读书笔记:Data语意学-Data Member的绑定

    一个inline函数实体,在整个class声明未被完全看见之前,是不会被评估求值(evaluated)的,也就是说,对于如下代码: 1 extern int x; 2 3 class A 4 { 5 ...

  3. 深度探索C++对象模型读书笔记(2)

    以下测试平台均为vs 2012 指向Data Member的指针测试(1) #include <stdio.h>class Base1 { public: int val1; int va ...

  4. 《Android深度探索卷一》读书笔记六

    1.简介 ARM架构的开发板基于X86架构的PC在CPU指令以及二进制格式上都有所不同.如果Linux驱动需要访问硬件(如LCD .WIFI,蓝牙等),这些硬件很难在PC上进行模拟,就要在带有这些硬件 ...

  5. 深度探索C++对象模型 学习笔记 第二章 构造函数语意学

    很多人抱怨说C++背着程序员做了太多事,如: if (cin) { /* ... */ } 为了让cin能转换为真假值,为cin定义一个类型转换运算符operator int(),就可以完成以上工作了 ...

  6. 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学

    <深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...

  7. 第2章构造函数语义学读书笔记——深度探索c++对象模型

    深度探索c++对象模型 第2章 构造函数语义学 2.1 Default Constructor的构建操作 2.2 Copy Constructor的构造操作 2.3 程序转化语义学 2.4 成员的初始 ...

  8. [读书笔记]《深度探索C++对象模型》

    文章目录 前言 思维导图 第一章 关于对象 第二章 构造函数语意学 构造函数 拷贝构造函数 初始化列表 第三章 Data 语意学 第四章 Function 语意学 非静态成员函数 静态成员函数 虚成员 ...

  9. 《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记

    来源:http://dsqiu.iteye.com/blog/1669614 之前一直对C++内部的原理的完全空白,然后找到<Inside The C++ Object Model>这本书 ...

  10. 《深度探索C++对象模型》:简单对象模型、表格驱动模型、C++对象模型

    前言 对象模型是深层结构知识,关系到"与语言无关.与平台无关.跨网络可执行"软件组件的基础. C++相对于精瘦的C来说,多了许多特性,正因如此,我们更有必要去探索.了解C++对象模 ...

最新文章

  1. 推荐一款非常不错的子网计算器
  2. [福大软工] W班 总成绩排行榜
  3. 【剑指offer28:字符串的排列】【java】
  4. oracle命令格式,OraCmD(Oracle命令行工具) V3.1 官方版
  5. windows下mongodb的安装与配置
  6. 分布式面试 - zookeeper 都有哪些使用场景?
  7. 笔试编程题常用的一些技巧方法
  8. 一个月爆肝一个基于SpringBoot的在线教育系统【源码开源】【建议收藏】
  9. XSS自动化工具——Beef
  10. C语言12进制逆序输出,C语言将整数以二进制逆序
  11. 小米手机销量超过苹果晋升全球第二
  12. 随机游走 推荐系统论文阅读
  13. 计算机怎样设置桌面照片,怎么把一张照片设置成适合自己电脑桌面的壁纸
  14. Win自动配置VS Code的C++开发环境
  15. Day 4 分支结构
  16. 数据库常用函数-基础
  17. 关闭Chrome浏览器的自动更新和升级提示
  18. 计算机学生管理系统,计算机学生信息管理系统毕业论文
  19. WAVE-U-NET: A MULTI-SCALE NEURAL NETWORK FOR END-TO-END AUDIO SOURCE SEPARATION-----论文翻译
  20. HTML5实现视频直播功能思路详解

热门文章

  1. django中admin的使用
  2. CI加载model的问题
  3. MongoDB数据库设计中6条重要的经验法则,part 2
  4. Use the onReadyStateChange Property (Visual Basic)
  5. [导入]VB程序中处理随机事件
  6. Hadoop中Namenode单点故障
  7. 并行程序设计---cuda memory
  8. MAPREDUCE原理篇(1)
  9. Broken Keyboard(悲剧文本)
  10. struts2自己定义拦截器