C++ 对象模型 | 读书笔记概览

这是一本灰常不错的书!

CSDN下载页面

豆瓣评论

读书笔记目录如下(不定时更新):

时间: 2024-10-07 05:16:30

C++ 对象模型 | 读书笔记概览的相关文章

【C++】深度探索C++对象模型读书笔记--关于对象(Object Lessons)

前言中的内容: 1.什么是C++对象模型? 1.语言中直接支持面向对象程序设计的部分 2. 对于各种支持的底层实现机制 2. C++ class的完整virtual functions在编译时期就固定下来了,程序员没有办法再执行器动态增加或取代其中一个.这使得虚拟调用操作得以快速地派送结果,付出的成本则是执行期的弹性. 3. 全局对象在main()函数之前便完成初始化. 第一章 关于对象 1. 在C++中,有两种class data members:static 和 nonstatic,以及三种

【C++】深度探索C++对象模型读书笔记--Data语意学(The Semantics of data)

1. 一个空类的大小是1 byte.这是为了让这一类的两个对象得以在内存中配置独一无二的地址. 2. Nonstatic data member 放置的是“个别的class object”感兴趣的数据,static data members则放置的是“整个class”感兴趣的数据. 3. C++对象模型把nonstatic data members直接放在每一个classs object之中.对于继承而来的nonstatic data members(不管是virtual 还是nonvirtua

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

第1章 关于对象 1.C++在布局以及存取时间上的主要的额外负担是由virtual引起的,包括: a.virtual function机制,引入vptr以及vtbl,支持一个有效率的"执行期绑定" b.virtual base class,用以实现"多次出现在继承体系中的base class,有一个单一而被共享的实例" c.多重继承下,派生类跟第二个以及后续基类之间的转换 2."指针的类型"会教导编译器如何解释某个特定地址中的内存内容以及其大小(

【C++】深度探索C++对象模型读书笔记--构造函数语义学(The Semantics of constructors)(四)

成员们的初始化队伍(member Initia 有四种情况必须使用member initialization list: 1. 当初始化一个reference member时: 2. 当初始化一个const member时: 3. 当调用一个base class的constructor,而它拥有一组参数时: 4.当调用一个member class的constructor,而它拥有一组参数时: 在这四种情况下,程序可以被正确编译运行,但是效率不高.例如: 1 class Word { 2 Stri

深度探索c++对象模型读书笔记:Data语意学-继承与Data member中内存对齐问题

书中在继承之后内存对齐问题上说道下面代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 class A 4 { 5 private: 6 int val; 7 char bit1; 8 }; 9 class B : public A 10 { 11 private: 12 char bit2; 13 }; 14 class C : public B 15 { 16 private: 17 char bit3; 18 }; 19 int

【C++】深度探索C++对象模型读书笔记--执行期语意学(Runtime Semantics)

对象的构造和析构: 全局对象 C++程序中所有的global objects都被放置在程序的data segment中.如果显式指定给它一个值,此object将以此值为初值.否则object所配置到的内容为0. 如果全局对象如果有构造函数或析构函数的话,我们说它需要静态的初始化操作和内存释放操作.编译器的执行步骤如下: 1.为每一个需要静态初始化的文件产生一个_sti()函数,内含必要的构造函数调用操作. 2. 在每一个需要静态的内存释放操作的文件中,产生一个_std()函数,内含必要的析构操作

【C++】深度探索C++对象模型读书笔记--Function(The Semantics of Function)

1. Nonstatic member function(非静态成员函数)的调用方式 编译器会将”member 函数实例“转换为对等的”nonmember函数实例“. 对于非静态成员函数 float Point3d::magnitude3d() const{...} 转换步骤如下: 1. 改写函数的signature(意指:函数原型)以安插一个额外的参数到member function中,用以提供一个存取管道,使class object得以将此函数调用.该额外参数被称为this指针: //non

C++ 零散知识点速记 -- &lt;深入探索C++对象模型&gt; 读书笔记

错误认知 没有任何构造函数的时候, 编译器总会生成默认构造函数 编译器仅在必要的时候生成默认构造函数 析构函数同理 条件 : 有带有默认构造函数的member 有带有默认构造函数的base class 有virtual function 有virtual inherit 任何对象都带有vptr / 可以对任何对象指针进行 dynamic_cast 操作 只有对象具有 多态 属性的时候 , 才具有 vptr , 才可以对其指针进行 dynamic_cast . 对一个没有多态 属性的指针进行dyn

分析模式(可复用的对象模型)- 读书笔记

读后感: Martin Fowler 20年前的书,OO和领域的思想对于今天的我们来说很基础,但在那时应该算是萌芽.Smalltalk语言简单,语法中省略空格可能因为那时的硬件设备昂贵,而不得不做出的选择,但是可读性真的很差,而书中基本是用Smalltalk进行示例.翻开这本书是为了查找财务模型,它没有让我失望,特别是第6章"库存与财务"给了我思维建模的概念.这本书和UML.GOF的"设计模式"差不多是在同一时间段出现,所以书的内容看上去有点古董的感觉.不过,大师的