深入探索C++对象模型
一枚小码农
这个作者很懒,什么都没留下…
展开
-
第1章 关于对象
目录 1.1 C++对象模式1.1.1 简单对象模型1.1.2 表格驱动对象模型1.1.3 C++对象模型1.2 关键词带来的困扰1.3 对象的差异1.3.1 指针的类型1.3.2 加上多态之后1.1 C++对象模式示例代码class Point{public: Point(float xval); virtual ~Point(); ...原创 2018-08-01 16:17:01 · 180 阅读 · 0 评论 -
第2章 构造函数语义学
2.1 Default Constructor的建构操作以下四种情况,编译器必须为class合成default Constructor!2.1.2 带有Default Constructor的Member Class Object如果一个class没有任何Constructor,但是它内含一个member object,且member object有default Constructo...原创 2018-08-06 17:10:28 · 231 阅读 · 0 评论 -
第5章 构造、解构、拷贝语义学
5.1 纯虚拟函数的存在我们可以定义和调用一个纯虚函数,不过只能被静态调用,不能由虚拟机制调用:inline void Abstract_base::interface() const{}inline void Concrete_derived::interface() const{ Abstract_base::interface();}PS:类中的pure virtu...原创 2018-08-10 16:47:08 · 394 阅读 · 0 评论 -
第3章 Data语义学
class X{};class Y:public virtual X {};class Z:public virtual X {};class A:public Y, public Z {}sizeof(X) == 1sizeof(Y) == 8sizeof(Z) == 8sizeof(A) == 12X并非是空的,会有一个隐晦的1 byte,那是被编译器放进去的一个c...原创 2018-08-07 16:26:15 · 3221 阅读 · 0 评论 -
第6章 执行期语义学
6.1 对象的解构和构造6.1.1 全局对象C++程序中的global object被放置在程序的data segment中。如果object中的内容未被赋予初值,那么都会被存为0.cfront的可移植但成本很高的静态初始化方法munch:1.为每一个需要静态初始化的文件中产生一个_sti()函数,内带必要的构造函数调用或inline expansion。2.为每一个需要静态的...原创 2018-08-23 11:06:23 · 224 阅读 · 0 评论 -
第4章 Function语义学
4.1 Member的各种调用方式4.1.1 非静态成员函数C++设计准则之一就是非静态成员函数至少和非成员函数的效率是一样的。实质是编译器已将member函数实体转换为对等的nonmember函数实体转换过程如下:1.改写函数的signature(原型),安插一个额外的参数到member function中,用以提供一个存取管道,使class object得以调用该函数,该参数为...原创 2018-08-10 11:34:43 · 290 阅读 · 0 评论