第一章 关于对象

本文及以后的文章上面的知识点来自于深度探索C++对象模型。没有侵权的意思,仅仅供自己和有需要的人学习-。

----------------------------------------------------------------------------------------------------------------------------------------------------------

封装后的布局成本:

  C++对象模型:Nostatic data members被配置于每一个class object之内,static..function.被放在个别的class object之外。

  每一个clas产生出一堆指向virtual table,放在表格之中。每个class object被安插一个指针,指向相关的virtual table。每一个clas所关联的type_infor object(用以支持RTTI)也由table指出来。通常放在第一个slot.

  缺点则是如果应用程序代码未曾改变,但所用到的data有所修改,那么那些应用程序代码同样得重新编译。

  在虚拟继承的情况下,base class不管在继承串链中被派生多少次,永远只会存在一个实例。

多态的主要用途是经由一个共同的接口来影响类型的封装,这个接口通常被定义在一个抽象的base class中。

需要多少内存才能显示一个class object

 其nonstatic data members的总和大小。

 加上任何由于alignment的需求而填补上去的空间存在于members之间,也可能存在于集合体边界。

 加上为了支持virtual而由内部产生的任何额外负担。

一个pointer或一个reference之所以支持多态,是因为它们并不引发内存中任何与内型有关的内存委托操作:会受到改变的,只有它们所指向的内存的大小和内容解释方式而已。

 当一个base object被直接初始化一个derived clas object 时,derived object就会被切割以塞入较小的base object内存中,derived type 将没有留下任何,多态于是不在呈现。

关于构造函数成员的初始化:

list:列表初始化先与{}里面的函数初始化,而且list按照成员声明的顺序初始化。在实际编程中要注意成员的初始化顺序问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值