《深度探索C++对象模型》
文章平均质量分 94
《深度探索C++对象模型》读书笔记
coding-hwz
生前何必久睡
展开
-
《深度探索C++对象模型》学习笔记 — 站在对象模型的尖端(On the Cusp of the Object Model)
《深度探索C++对象模型》学习笔记 — 站在对象模型的尖端(On the Cusp of the Object Model)一、模板1、模板中的名称决议法一、模板1、模板中的名称决议法C++标准中,模板相关的作用域有两个 —— scope of the template declaration(声明作用域) 和 scope of the template instantiation(实例化作用域)#include <iostream>using namespace std;void原创 2021-07-18 14:25:59 · 319 阅读 · 0 评论 -
《深度探索C++对象模型》学习笔记 — 执行期语义学(Runtime Semantics)
《深度探索C++对象模型》学习笔记 — 执行期语义学(Runtime Semantics)一、对象的构造和析构1、编译器插入的构造析构代码2、全局对象二级目录三级目录一、对象的构造和析构1、编译器插入的构造析构代码对于最简单的函数,编译器需要在对象声明之后插入构造函数的调用;在函数返回之前插入析构函数的调用。实际上,对于任何一个函数中的对象,编译器需要在每一个离开点之前插入析构函数的调用。例如:class CLS_Test {};int main(){ int i = 0; CLS_Tes原创 2021-07-16 21:54:13 · 273 阅读 · 0 评论 -
《深度探索C++对象模型》学习笔记 — 构造、析构、拷贝语义学(The Semantics of Construction,Destruction,and copy)
《深度探索C++对象模型》学习笔记 — 构造、析构、拷贝语义学(The Semantics of Construction,Destruction,and copy)一、抽象类和纯虚函数二、无继承下的对象构造1、POD三、继承体系下的对象构造1、构造顺序一、抽象类和纯虚函数如果我们尝试在抽象类中声明数据成员,那么我们至少应该提供protected权限的初始化数据成员的构造函数;相应的,如果这些成员需要手动释放或解锁,我们需要提供析构函数执行相应操作。一般而言,我们会选择将析构函数声明为纯虚函数,然后提供原创 2021-07-14 21:03:42 · 302 阅读 · 0 评论 -
《深度探索C++对象模型》学习笔记 — Function语义学(The Semantics of Function)
《深度探索C++对象模型》学习笔记 — Function语义学(The Semantics of Function)一、Member的各种调用方式1、非静态成员函数2、虚函数二、虚成员函数一、Member的各种调用方式1、非静态成员函数非静态成员函数将会被转化为非成员函数,其步骤如下:(1)改写函数签名,在第一个参数的位置插入一个this指针。(2)修改调用方式,将 -> 和 . 操作符的调用,改为对象地址的调用。(3)使用name mangling为每个函数设置一个独一无二的签名。签名中原创 2021-07-06 20:44:21 · 192 阅读 · 0 评论 -
《深度探索C++对象模型》学习笔记 — Data语义学(The Semantics of Data)
《深度探索C++对象模型》学习笔记 — Data语义学(The Semantics of Data)一、数据成员的绑定1、全局变量与局部变量2、全局类型与局部类型二、Data Member 的存取1、静态成员变量2、非静态数据成员一、数据成员的绑定1、全局变量与局部变量float x = 5.0;class CLS_Point{public: CLS_Point(float _x) { x = _x; } float getX() { return x; }privat原创 2021-06-30 18:03:18 · 120 阅读 · 0 评论 -
《深度探索C++对象模型》学习笔记 — 关于对象 (Object Lessons)
《深度探索C++对象模型》学习笔记 — 关于对象 (Object Lessons)一、C++对象模式C++类成员变量存取和方法调用时的主要负担是由虚函数和虚继承带来的。一、C++对象模式原创 2021-06-29 16:19:50 · 101 阅读 · 0 评论 -
《深度探索C++对象模型》学习笔记 — 构造函数语义学(The Semantics of Constructors)
《深度探索C++对象模型》学习笔记 — 构造函数语义学(The Semantics of Constructors)一、不安全的转换1、从类到基本类型的不安全转换2、从基本类型到类的不安全转换二、默认构造函数1、trivial 默认构造函数2、编译器创建non-trivial 默认构造函数的条件1 — 带有默认构造函数的 Member Class Object(1)示例(2)问题1:不同的编译模块在包含相同头文件时为包含的类声明多个构造函数怎么办?(3)问题2:已有显式声明的构造函数如何插入必要的初始化代码原创 2021-04-15 16:41:47 · 432 阅读 · 0 评论