
《深度探索C++对象模型》笔记
文章平均质量分 85
《深度探索C++对象模型》阅读期间所做笔记
晰烟
追风赶月莫停留,平芜尽处是春山。
展开
-
《深度探索C++对象模型》笔记目录
读书笔记,特此记录。😇😇😇《深度探索C++对象模型》阅读笔记 第一章 关于对象《深度探索C++对象模型》阅读笔记 第二章 构造函数语意学《深度探索C++对象模型》阅读笔记 第三章 Data语意学《深度探索C++对象模型》阅读笔记 第四章 Function语意学《深度探索C++对象模型》阅读笔记 第五章 构造、解构、拷贝语意学《深度探索C++对象模型》阅读笔记 第六章 执行期语意学《深度探索C++对象模型》阅读笔记 第七章 站在对象模型的尖端...原创 2022-06-25 17:16:25 · 278 阅读 · 0 评论 -
《深度探索C++对象模型》阅读笔记 第七章 站在对象模型的尖端
然而,member functions(至少对于那些未被使用过的)不应该被“实例化”。只有在member functions被使用的时候,C++ Standard才要求它们被“实例化”。目前的编译器并不精确遵循这项要求。之所以由使用者来主导“实例化”(instantiation)规则,有两个主要原因:可以明确的要求在一个文件中将整个类模板实例化:也可以显示指定实例化一个模板类的成员函数:或是针对一个模板函数:模板的错误报告,使用模板并遇到错误的大概都深有体会,那就是一个灾难。所以在一个parsing策原创 2022-06-25 17:10:53 · 619 阅读 · 0 评论 -
《深度探索C++对象模型》阅读笔记 第六章 执行期语意学
如果一个区段(译注:以 { } 括起来的区域)或函数中有一个以上的离开点,情况会稍微混乱一些。Destructor必须被放在每一个离开点(当时object还存活)一般而言我们会把object尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生操作和摧毁操作,由于这样的限制,下面这些munch策略就浮现出来了:因为静态语意保证了 mat_identity 在整个程序周期都存在,而不会在函数 identity()退出时被析构,所以:以下就是书中作者在cfront之中的做法。首先,我导人一个临原创 2022-06-25 17:07:36 · 292 阅读 · 0 评论 -
《深度探索C++对象模型》阅读笔记 第五章 构造、解构、拷贝语意学
const 成员变量的用法和普通 const 变量的用法相似const 成员函数可以使用类中的所有成员变量,但是不能修改它们的值一旦将对象定义为常对象之后,不管是哪种形式,该对象就只能访问被 const 修饰的成员了(包括 const 成员变量和 const 成员函数),因为非 const 成员可能会修改对象的数据(编译器也会这样假设),C++禁止这样做。1. 即使是一个抽象基类,如果它有非静态数据成员,也应该给它提供一个带参数的构造函数,来初始化它的数据成员。或许你可以通过其派生类来初始化它的数据成员(假原创 2022-06-25 17:04:41 · 277 阅读 · 0 评论 -
《深度探索C++对象模型》阅读笔记 第四章 Function语意学
Nonstatic Member Functions(非静态成员函数)C++的设计准则之一就是:nonstatic member function至少必须和一般的nonmember function有相同的效率。名称的特殊处理(Name Mangling)一般而言,member的名称前面会被加上class名称,形成独一无二的命名。Virtual Member Functions(虚拟成员函数)vptr表示由编译器产生的指针,指向virtual table。它被安插在每一个“声明有(或继承自)一个或原创 2022-06-25 17:01:38 · 307 阅读 · 0 评论 -
《深度探索C++对象模型》阅读笔记 第三章 Data语意学
Lippman的一个法国读者的结果是:而我在VS2019,win10,64bit上以及Linux环境下的Ubuntu下输出都是https://www.cnblogs.com/fengyaoyao/p/10262312.htmlhttps://blog.youkuaiyun.com/yi_chengyu/article/details/120856687先贴几个重要结论:C++的空类是指这个类不带任何数据,即类中没有非静态(non-static)数据成员变量,没有虚函数(virtual function),也没有虚基原创 2022-06-25 16:58:00 · 187 阅读 · 0 评论 -
《深度探索C++对象模型》阅读笔记 第二章 构造函数语意学
在读《深度探索C对象模型》之前,我一直停留在上述二种误解上,所幸的是Lippman为我破除了藩篱。下面的部分我将随《深度探索C对象模型》对C++默认构造函数一探究竟。C++标准规定:如果类的设计者并未为类定义任何构造函数,那么会有一个默认构造函数被暗中生成,而这个暗中生成的默认构造函数通常是不做什么事的(无用的),下面四种情况除外。换句话说,有以下四种情况编译器必须为未声明构造函数的类生成一个会做点事的默认构造函数。我们会看到这些默认构造函数仅“忠于编译器”,而可能不会按照程序员的意愿程效命。若原创 2022-06-25 16:53:18 · 346 阅读 · 0 评论 -
《深度探索C++对象模型》阅读笔记 第一章 关于对象
C++类包含两种数据成员:静态数据成员和非静态数据成员;同时包含成员函数,静态函数和虚函数三种成员函数在此模型中,被配置于每一个 之内,则被存放在所有的 之外. 和 也被放在所有的 之外. 则由虚表机制实现,class 里保存着一个指向虚表的指针,虚表中存放着指向虚函数的函数指针。每一个class所关联的type_info object(用以支持 runtime type identification,RTTI)也经由 virtual table 被指出来,通常是放在表格的第一个slot处。这个模原创 2022-06-25 16:51:02 · 466 阅读 · 0 评论