美文网首页
第一章 关于对象

第一章 关于对象

作者: 厝弧 | 来源:发表于2017-06-01 18:53 被阅读0次

1 对象模型

1.1 简单对象模型

简单对象模型
  • 每个slot指向一个members,包括数据以及函数
  • members本身不在object中,仅包含指向members的指针
  • $ object_size = ptr_size * members_num $

2.2 表格驱动

表格驱动模型
  • data member table存储数据本身
  • member function table每个slot对应一个member function
  • object仅包含data member table以及member function table两个指针

2.3 c++对象模型

c++ 对象模型
  • 从简单对象模型派生
  • virtual table[vtbl]:存储virtual functions指针的表格,一般放在object表格第一个slot处,称为vptrvptr的设定与重置由该class的构造函数或者复制运算符自动完成。
  • object存储非静态数据以及非静态函数以及虚拟地址表
  • 优点:空间以及存取时间效率;缺点:对象的非静态数据成员改变时,需要重新编译

2.4 关于继承

多重继承
  • 继承没有深度上的限制

2.5 关于多态

子类对象与指针的可能布局
其中ZooAnimal的子类为Bear
  • 多态转换会造成对象的分割:
```cpp
Bear *bear = new Bear;
ZooAnimal *zoo_animal = (ZooAnimal *)bear;
```
+ zoo_animal只能访问ZooAnimal所拥有的部分
+ 转换只能使用指针或者引用
  • 对于虚函数,子类实际上是重写了虚函数地址表中函数地址,因此对于zoo_animal来讲,其如果存在虚函数,调用的是Bear中的实现。该操作是在程序运行过程中实现。

相关文章

  • 第一章 关于对象

    C语言:数据与函数分开 声明一个struct Point3d 打印一个Point3d,定义函数或者宏 或者直接在程...

  • 第一章 关于对象

    简单对象模型(A Simple Object Model) 一个objects是一系列的slots。members...

  • 第一章 关于对象

    1 对象模型 1.1 简单对象模型 每个slot指向一个members,包括数据以及函数members本身不在o...

  • jQueryDom的操作(1)

    第一章 如何筛选jQuery对象 操作jQuery对象,如何创建HTML DOM对象和jQuery对象 区别 检...

  • 面向对象(未完成)

    面向对象 标签(空格分隔): 面向对象 第一章:面向对象(上) 什么叫面向对象 面向过程、面向对象、两者区别 构造...

  • 《JAVA编程思想》学习笔记:第1-4章(Java概述)

    第一章、对象导论 1.1 抽象过程 面向对象编程:(OOP,Object Oriented Programming...

  • 关于对象

    1、Java不需要销毁对象 ①作用域(scope):决定了其内定义的变量名的可见性和生命周期。 ②对象的作...

  • 关于对象

    #面向对象 学习了面向对象呢,简要就是说为一切都是对象。 比如生活中的东西,衣食住行这些等等。。。 那这个面对就是...

  • 关于this对象

    this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方...

  • 关于对象……

    嘉羿和苪萣正在谈论关于对象的事儿 嘉羿:我和我对象每天都要聊天,语音啊电话啊或者是视频。 苪萣:每天都要聊吗? 嘉...

网友评论

      本文标题:第一章 关于对象

      本文链接:https://www.haomeiwen.com/subject/nsjjfxtx.html