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中。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 19:27:47

c++对象模型-对象模型的相关文章

深入探索C++对象模型--对象模型

C++对象模型 C++中数据成员有两种:static和nonstatic,以及三种classmember functions:static nonstatic和virtual 现在标准C++对象模型: Nonstatic data Members被置于每一个classobject之内,static data members则被存放在所有的class object之外,static和nonstatic function members也被放在所有的class object之外,virtual  f

VSTO学习笔记(二)Excel对象模型

原文:VSTO学习笔记(二)Excel对象模型 上一次主要学习了VSTO的发展历史及其历代版本的新特性,概述了VSTO对开发人员的帮助和效率提升.从这次开始,将从VSTO 4.0开始,逐一探讨VSTO开发中方方面面,本人接触VSTO时间不长,也是一次尝试.鉴于Excel在整个Office家族中的重要地位,故先从Excel开始介绍,后续内容会陆续介绍Word.PowerPoint.Outlook.InfoPath等.由于VSTO 4.0建立在Office 2010基础之上,先介绍一下Office

JavaScript----BOM(浏览器对象模型)

BOM 浏览器对象模型 BOM 的全称为 Browser Object Model,被译为浏览器对象模型.BOM提供了独立于 HTML 页面内容,而与浏览器相关的一系列对象.主要被用于管理浏览器窗口及与浏览器窗口之间通信等功能. 1.Window 对象 window对象是BOM中最顶层对象:表示当前浏览器窗口,window对象的属性和方法应用于当前整个浏览器窗口. window 对象的属性主要有: screenX / screenY / screenLeft / screenTop:都为获取位置

C++ 继承、多继承、虚拟继承对象模型

C++面向对象语言一大难点是继承,但又是不得不掌握的.简单的继承是很容易理解的,但是当涉及到多继承,设计到虚函数的继承,特别是涉及到虚继承时,问题就会变得复杂.下面的内容来自参考资料中的三篇文章.C++的继承学习中,最主要是要掌握派生类的对象模型,基类和派生类指针之间的向上向下类型转换,当继承中的出现虚函数成员函数的访问(多态),虚继承是如何通过引入虚基表解决"菱形继承"中存在多份公共基类的问题. 一.简单的对象模型 1.定义 class MyClass { public: int v

第五十课、c++对象模型分析(上)

一.c++对象模型之成员变量 1.class是一种特殊的struct (1).在内存中class依旧可以看做是变量的集合 (2).class与struct遵循相同的内存对齐规则 (3).class中的成员函数和成员变量是分开存储的 A.每个对象有独立的成员变量 B.所有对象共享类中的成员函数 2.运行时的对象退化为结构体的形式 (1).所有成员变量在内存中依次分布 (2).成员变量间可能存在内存间隙 (3).可以通过内存地址直接访问成员变量 (4).访问权限关键字在运行时失效 #include<

第51课 C++对象模型分析(下)

1. 单继承对象模型 (1)单一继承 [编程实验]继承对象模型初探 #include <iostream> using namespace std; class Demo { protected: int mi; int mj; public: //虚函数 virtual void print() { cout << "mi = " << mi << ", " << "mj = " &l

SharePoint服务器端对象模型 之 使用CAML进展数据查询

SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列表条目的集合. 除去列表上的查询之外,在SharePoint中还大量存在着各种各样的查询,比如针对回收站的SPRecycleBinQuery.针对审计的SPAuditQuery.针对变更的SPChangeQuery等等,不过这些查询在实际项目中使用到的频率并不是很高.本章节还是着重介绍列表查询功能.

Selenium2(java)页面对象模型(Page Object) 八

在开发一个 Selenium WebDriver 测试,我们可以使用页面对象模型.这个模型可以使测 试脚本有更高的可维护性,减少了重复的代码,把页面抽象出来.对象模型也提供了一个注释,帮助缓存远程,避免出现元素过期的问题. 分类页面元素 新建java项目selenium_po,导入testng和selenium类库 新建一个page包和一个test包用于存放测试用例 在page包中新建一个BDPage.java用于存取元素 具体代码: package page; import org.openq

C++对象模型

什么是C++对象模型? 要想理解它,必须把C++语言层面的面向对象特征和概念与对象的底层技术结合起来进行分析. 前者如构造函数.拷贝和赋值函数.析构函数.静态成员.虚函数.继承.组合.动态创建对象.RTTI等. 后者则是语言实现隐藏起来的细节,如对象的内存映像,vtable的构造.vptr的插入和初始化的时机.构造和析构函数的自动调用时机.对象的构造和析构次序.临时对象的创建和销毁.RTTI的底层实现技术等. 对象模型参考书籍:<inside The C++ Object Model>