zoukankan      html  css  js  c++  java
  • c++对象模型-对象模型

    1:简单对象模型
    1>介绍:每个成员都使用一个指针指向真正的成员。所以对象
    的大小很好确定,就是成员数*指针大小。
    2>用途:成员函数就是使用这个模型的
    3>图:这里写图片描述
    4>加上继承:每增加一个基类,就多一个指针。
    2:表格驱动对象模型
    1>介绍:把所有和members相关的信息抽出来,放在data
    member table 和 member function table中
    2>用途:virtual function
    3>图:这里写图片描述
    4>加上继承:增加一个base table,一个base ptr
    在class对象中存放一个ptr指向base table,在base
    table中存放所有的base指针。但是相比于简单对象
    模型,这种方式会有两层间接指向,所以会更浪费时
    间。
    5>图:这里写图片描述

    3:c++对象模型
    1>介绍:nonstatic data members 放在class object内
    static data members 放在 class object 之外。static 和
    nonstatic function members 放在class object外。对于
    virtual functions则用vptr指向vtbl。每个vtbl的第一个位
    置放置class的信息。
    2>用途:c++对象
    3>图:这里写图片描述
    4>加上继承:并不存放指针,而是把所有的base class
    的data members直接放置在derived class object中。

  • 相关阅读:
    F#周报2019年第40期
    F#周报2019年第39期
    F#周报2019年第38期
    python模块之time_random
    python小趣味_520绘制一个心形.
    python模块之json_pickle_shelve
    python基础17_列表推导式 vs 生成器表达式
    python基础16_闭包_装饰器
    Spark安装笔记
    python基础15下_迭代器_生成器
  • 原文地址:https://www.cnblogs.com/boydfd/p/4983108.html
Copyright © 2011-2022 走看看