
Inside the C++ Object Model
文章平均质量分 89
七夜落幕丶
这个作者很懒,什么都没留下…
展开
-
深度探索C++对象模型-第一章
关于对象一 C++封装成本C++用类去定义对象时,系统会为每一个对象分配存储空间。每个对象所占用的存储空间只是该对象的数据部分(虚函数指针和虚基类指针也属于数据部分)所占用的存储空间,而不包括函数代码所占用的存储空间。 C++程序的内存格局通常分为四个区:全局数据区(data area),代码区(code area),栈区(stack area),堆区(heap area)(即...原创 2018-05-21 16:05:03 · 256 阅读 · 0 评论 -
深度探索C++对象模型-第二章
构造函数语意学一 默认ctor的构造操作在4种情况下,编译器会为未声明ctor的类合成一个默认的ctor。1 带有默认ctor的成员类对象如果一个类内含一个或一个以上的成员类对象,那么类的每一个ctor必须调用每一个成员类的默认ctor,编译器会扩张已经存在的ctor,在其中插入一些代码,使得用户写的代码被执行前,先调用必要的默认ctor。调用的顺序是这些类对象在类中声明的顺序...原创 2018-05-23 16:56:44 · 1034 阅读 · 0 评论 -
深度探索C++对象模型-第三章
Data语意学一 成员变量的绑定如果在类内部和外部出现了同名成员变量,而类的内部在成员变量声明前有内联成员函数的话,会有以下误解:extern float x;class A{public: int func(){ return X; }private: int x;};这里的x不会出现绑定错误的原因,因为C++内部将内联函数放到整个类的后面进行处理,...原创 2018-05-24 14:50:04 · 650 阅读 · 0 评论 -
深度探索C++对象模型-第四章
Function语意学一 成员的各种调用方式1 非静态成员函数非静态成员函数采用隐式传入this指针的方式进行成员的调用。this指针指向对象中的成员。class A{public: A(const A &lhs){ a = lhs.a; b = lhs.b; c = lhs.c; }private:...原创 2018-05-29 18:36:45 · 234 阅读 · 0 评论 -
深度探索C++对象模型-第五章
构造、析构、拷贝语意学抽象基类仍然需要一个显式的构造函数以初始化成员变量。纯虚函数的存在纯虚函数可以被静态调用,不可以通过虚拟机制调用。但是纯虚析构函数一定要被定义。因为对于派生类来说,总要调用基类的析构函数,基类不定义析构函数会导致连接失败。一 “无继承”情况下的对象构造Plain OI’ Data类型:C风格结构体类型,无需构造和析构的过程,直接申请内存并复制内...原创 2018-05-31 19:22:07 · 312 阅读 · 0 评论