
ObjectModels
幸福的起点_
搬砖ing
展开
-
《深度探索C++对象模型》读书笔记第一章:关于对象
《深度探索C++对象模型》读书笔记之 关于对象前言c语言中,“数据”和“处理数据的操作(函数)” 是分开声明的,将这种程序方法称为程序性(procedural),比如声明一个struct Point3d:struct Point3d { float x; float y; folat z;};而操作该数据数据的函数例如打印函数,只能另外定义成:vo...原创 2018-05-21 13:37:11 · 2309 阅读 · 2 评论 -
《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学
《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constructor中或者在其他member functions中指定初值。纯虚函数的存在纯虚函数,虚函数在声明后加上 = 0,纯虚函数的意义在于只定义一个可继承的接口,并没有实现(虚函数意义在于定义一个可继...原创 2018-05-25 14:45:09 · 908 阅读 · 3 评论 -
《深度探索C++对象模型》读书笔记第四章:Function语意学
一.Nonstatic Member Functions(非静态成员函数)准则:非静态成员函数至少和一般的非成员函数有相同的效率。编译器内部已经将成员函数转换为非成员函数。 转换分为三个部分: - 1.添加this指针为函数的第一个参数,如果成员函数是const, 那么this指针的类型为: const className * const this;并且对每一个nonstatic da...原创 2018-05-16 10:34:56 · 1026 阅读 · 0 评论 -
《深度探索C++对象模型》读书笔记第二章:构造函数语义学
《深度探索C++对象模型》读书笔记之 构造函数语义学编译器背着程序员做了很多事,explicit关键字的导入,是为了制止“单一参数的constructor”被当作一个conversion运算符。这一章中,挖掘了编译器对于“对象构造过程”的干涉,以及对于“程序形式”和“程序效率”的冲击。 一.Defalut Constructor的构造过程关键:是编译器需要(就会合成默认构造函数)...原创 2018-05-23 17:05:43 · 858 阅读 · 2 评论 -
《深度探索C++对象模型》读书笔记第三章:Data语意学
《深度探索C++对象模型》读书笔记之 Data语意学类的大小(sizeof)一个空类的大小通常为1,是因为编译器为其安插了一个char,以便这个类的任意两个object能够在内存中配置独一无二的地址。 一个类的大小通常与机器和编译期有关,受以下三个因素的影响: 1. 语言本身的额外负担 比如支持虚函数,或者虚继承。 2. 编译器对于特殊情况的优化处理 某些编译器会对empty...原创 2018-05-24 13:11:50 · 992 阅读 · 2 评论 -
《深度探索C++对象模型》读书笔记第六章:执行期语意学
《深度探索C++对象模型》读书笔记第六章:执行期语意学C++在执行期的一些变化,例如临时对象的产生,临时对象的构造和析构成本是我们需要考虑的,我们将在第三节具体讲解。一.对象的构造和析构一般而言,我们将object尽可能放置在使用它的那个程序区段附近,这样可以节省非必要的对象的构造和析构成本。全局对象已经初始化全局对象均存储在data segment(数据段),未初始化...原创 2018-05-29 17:24:57 · 490 阅读 · 0 评论