《深度探索C++对象模型》读书笔记——第一章(关于对象)
来源:互联网 发布:软件怎么下载 编辑:程序博客网 时间:2024/05/22 04:48
1.C++的封装并不会增加布局成本,数据封装和普通结构体一样·,而行为封装,也不会增加。因为非内联函数,只会诞生一个实例。但是内联函数,则会在每一个使用者上诞生一个实例。
C++在布局上的额外负担主要是由virtual机制引起的:
(1)Virtual Function机制
(2)Virtual base class机制
(3)还有就是多重继承下产生的额外负担
C++中,有两种数据成员,静态和非静态。有三种成员函数,静态,非静态和虚函数。
2.第一种对象模型(简单对象模型)
就是在模型中,只保留类内各成员的指针,完全通过指针进行索引。
这样可以避免”members有不同的类型,因而需要不同的存储空间”所招致的问题。
而,一个类对象的大小也很好确定,它的成员的数量乘以指针的大小即可。
3.第二种对象模型(表格驱动对象模型)
在这个提出的模型里,我们将所有与成员相关的信息提取出来,放在一个数据成员表盒一个成员函数表中。而对象本身则内含指向两个表的指针。成员函数表中是一系列接口,每个接口指向对应的成员函数。数据成员表中则是直接存放的数据本身。
4.第三种对象模型(C++对象模型)
在这个模型里,非静态数据成员被分配在每个类对象中,静态数据成员在存放在所有对象之外。静态成员函数和非静态成员函数都存放在对象之外,及所有对象公有一份实例。
虚函数则用两个步骤支持:
1.每一个类产生一堆指向虚函数的指针存放在表格中,称为虚函数表virtual table(vtbl)
2.每一个类对象被安插一个指针,指向相关的虚函数表。通常这个指针被称为vptr。
5.一个类对象的大小包括
a) 非静态数据成员的大小
b) 内存补齐所占有的空间
c) 虚机制额外的内存开销
- 《深度探索C++对象模型》读书笔记——第一章(关于对象)
- 《深度探索C++对象模型》读书笔记第一章:关于对象
- 《深度探索C++对象模型》读书笔记——第一章
- <<深度探索c++对象模型>>第一章读书笔记
- 《深度探索C++对象模型》第一章关于对象ObjectLessons之读书笔记
- 深度探索c++对象模型——读书笔记(一)
- 深度探索c++对象模型——读书笔记(二)
- [读书笔记] 深入探索C++对象模型-第一章《关于对象》
- 深度探索C++对象模型第一章 关于对象
- 【深度探索C++对象模型】第一章 关于对象
- 《深度探索C++对象模型》第一章 关于对象
- 《深度探索C++对象模型》第一章关于对象 摘录
- 《深度探索C++对象模型》读书笔记——关于对象【for_wind】
- 《深度探索C++对象模型》读书笔记之关于对象
- 《深度探索C++对象模型》—关于对象(Object Lessons)
- 深度探索 C++对象模型——读书笔记
- 深度探索C++对象模型复习和学习 第一章 关于对象 (Object Lessons)
- 深度探索C++对象模型第一章
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
- 黑马程序员-day21-File类
- 图像上传
- SYS_REFCURSOR
- 上网访问速度慢的原因(计算机网络常识)
- 《深度探索C++对象模型》读书笔记——第一章(关于对象)
- JAVA接口
- Oracle用户解锁
- Android Sqlite+反射 实现CRUD
- bootstrap基础(一)文本,列表,代码,表格
- 机器学习3——决策树总结
- 冒泡排序法、选择排序法和插入排序法的排序过程
- Handler消息处理机制原理
- iOS 图片上传二