c++对象模型-对象模型
2015-08-27 17:25
190 查看
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中。
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中。
相关文章推荐
- c++对象模型-对象模型
- c++ string用法
- 非循环链队类C++定义
- C++中mutable关键字的用法
- c语言之头文件包含顺序问题
- C++中mutable关键字的用法
- 【C++】打印1到最大的n位数
- LeetCode 214. Shortest Palindrome
- OC: 用OC语言完成简易通讯录(实现增删改查)功能.
- C++虚函数与纯虚函数的区别
- CppUnit测试框架入门
- c++ const常量的实现机制
- C++连接samba
- C++异常处理
- Effective C++——条款7(第2章)
- 在C语言中使用对数函数的方法
- OutMan——C语言中的冒泡排序、选择排序、折半查找以及指针的介绍
- 【C++拾遗】 从内存布局看C++虚继承的实现原理
- c++实现ascii转unicode
- C++中的static关键字