深入探索C++对象模型 读书笔记

原创 2015年07月07日 14:47:59

3.2 数据成员的布局

1.对象的数据成员不一定连续存储,中间可能穿插对齐字节


3.4 继承 与数据成员

	在C++继承模型中,一个derived class object所表现出来的东西,是其自己的members加上其base classes members的总和,至于derived class members和base classes members的排列顺序在C++ Standard并未强制规定,对于大部分编译器来说,base class membes总是先出现,但是属于virtual base class的除外.
1) 单一继承不含多态
	一般而言,单一无多态的继承并不会增加空间或是存取时间上的额外负担,但是把一个class分解为两层或是多层,有可能会为了"表现class体系之抽象化"而膨胀所需的空间,C++语言保证"出现在derived class 中的base class subobject保持其完整原样性",所以,有可能因为alignment填补的空间在derived class保持其原来的大小,而导致derived class的空间膨胀。
	
class A
{
int i;
char c1;
};

class B : public A
{
char c2;
};
<span style="white-space:pre">	</span>如上代码,sizeof(A)等于8(3个字节填充),sizeof(B)等于12,即派生类对象的大小等于:基类的大小+派生类的成员+字节填充。

《深度探索C++对象模型》读书笔记——关于对象【for_wind】

//整理之,分享之,欢迎指正。for_wind 1、C与C++的区别:       概括来说,C程序中程序性地使用全局数据[注1]。而C++采用ADT(abstract data tpye)或...
  • for_wind
  • for_wind
  • 2014年03月28日 14:08
  • 1383

《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记

来源:http://dsqiu.iteye.com/blog/1669614 之前一直对C++内部的原理的完全空白,然后找到《Inside The C++ Object Model》...
  • freeking101
  • freeking101
  • 2017年03月03日 14:52
  • 1676

深度探索C++对象内存模型

前面简单的论述过C++对象模型,总觉得不够深入,现近闲来进一步挖掘C++对象内存布局情况。主要讨论:单一继承,多重继承,钻石继承的有无虚函数以及虚拟继承的情况。贴出测试程序,并给出测试结论以及对应的类...
  • yeswenqian
  • yeswenqian
  • 2014年11月14日 21:48
  • 1166

深入C++对象模型的读书笔记

  • 2012年06月22日 22:48
  • 337KB
  • 下载

[读书笔记] 深入探索C++对象模型-第四章-Function语义学(上)

开始整理第四章的内容,关于函数的东西。 1. 静态成员函数不可以是const的,原因是因为this指针,详细参考:http://blog.csdn.net/beyongwang/article/det...
  • beyongwang
  • beyongwang
  • 2016年09月10日 21:43
  • 262

[读书笔记] 深入探索C++对象模型-第二章《构造函数语义学》(中)

继续整理第二章的内容,是关于拷贝构造函数的。 1. 有三种情况会以一个对象的内容作为另一个类对象的初始值: a. 明确的以一个对象初始化另一个对象,例如: A a1 = a2;//会调用类A的拷贝构造...
  • beyongwang
  • beyongwang
  • 2016年08月23日 20:28
  • 158

[读书笔记] 深入探索C++对象模型-第六章-执行期语义学(下)

继续整理第六章剩下的内容,关于临时对象的几条准则。 1. 在某些情况下,编译器可以产生必要的,或者可以带来方便的临时对象,具体行为由编译器来定义。例如,对于如下操作: T a, b; T c = a ...
  • beyongwang
  • beyongwang
  • 2016年10月11日 21:26
  • 133

[读书笔记] 深入探索C++对象模型-第四章-Function语义学(下)

继续第四章的内容整理,这一部分也是第四章的最后一部分,是关于成员函数指针的,第三章下的内容整理是关于成员变量指针的,这个则是成员函数指针,二者可以互为参考。 1. 非虚成员函数指针(非静态)。 取一个...
  • beyongwang
  • beyongwang
  • 2016年09月17日 22:13
  • 196

[读书笔记] 深入探索C++对象模型-第三章 Data语义学(下)

整理第三章最后的部分内容,关于数据成员指针的,之前竟然没听过类数据成员指针一说,果然路漫漫其修远兮啊。 注:以下例子和图片来源于原书。 1. 数据成员指针是指指向类数据成员的指针,其内容为对应数据成员...
  • beyongwang
  • beyongwang
  • 2016年09月05日 22:27
  • 217

[读书笔记] 深入探索C++对象模型-第三章 Data语义学(上)

注:以下部分图片来自原书 1. 关于类的大小,有三个因素会影响类的大小: a. 语言本身所造成的额外负担,例如虚基类,相应的子类会存在某种形式的指针,或者直接指向虚基类子对象,或者指向一个存放着虚基类...
  • beyongwang
  • beyongwang
  • 2016年08月28日 17:01
  • 234
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入探索C++对象模型 读书笔记
举报原因:
原因补充:

(最多只允许输入30个字)