C++对象模型详解

978-7-115-65712-1
作者: 秦连松
译者:
编辑: 龚昕岳
分类: C++

图书目录:

第 1 章 概述 ... 1

第 2 章 工具 ... 5

2.1 使用 cppinsights ... 5

2.2 使用 Compiler Explorer ... 12

2.3 总结 ... 13

第 3 章 数据语义学 ... 15

3.1 数据成员布局 ... 17

3.2 继承与数据成员 ... 36

3.3 数据成员的存取 ... 55

3.4 指向成员变量的指针... 57

3.5 总结 ... 62

第 4 章 函数语义学 ... 63

4.1 C++函数决议 ... 64

4.2 虚表构造 ... 69

4.3 成员函数的调用方式... 79

4.4 虚成员函数的调用方式 ... 89

4.5 指向成员函数的指针... 99

4.6 总结 ... 107

第 5 章 构造、析构语义学 ... 109

5.1 对象构造 ... 110

5.2 对象析构 ... 131

5.3 全局对象构造与析构... 145

5.4 总结 ... 151

第 6 章 异常处理 ... 155

6.1 C++异常的约定 ... 157

6.2 GCC 中 C++异常的实现 ... 169

6.3 现代 C++中的异常介绍 ... 189

6.4 C++异常的处理 ... 193

6.5 总结 ... 196

第 7 章 运行时类型识别 ... 197

7.1 RTTI 布局 ... 198

7.2 typeid 操作符 ... 206

7.3 dynamic_cast 算法 ... 211

7.4 总结 ... 215

第 8 章 Name Mangling 规则 ... 217

8.1 基本概念 ... 218

8.2 操作符的编码 ... 222

8.3 一些特殊函数和实体的编码 ... 224

8.4 类型编码 ... 227

8.5 表达式编码 ... 234

8.6 作用域编码 ... 241

8.7 lambda 表达式编码 ... 243

8.8 压缩 ... 246

8.9 总结 ... 251

详情

本书基于GCC/Clang编译器深入讲解C++对象模型的相关知识,涵盖C++对象的内部工作原理及底层的汇编实现机制。 本书先介绍对象模型的基本概念,并引入两个用于研究C++代码实现的开源工具——cppinsights和Compiler Explorer。接着,依次讲解C++数据语义学,即编译器如何布局C++对象模型中的数据成员;C++函数语义学,包括编译器如何实现C++中的多态、如何调用虚函数等;C++构造、析构语义学,涉及编译器对C++对象的构造和析构方式,包括全局对象和静态局部变量的构造等内容;C++异常处理,包括GCC中异常处理的实现方式及实践准则;C++运行时类型识别(RTTI)的实现原理,包括dynamic_cast算法的具体实现;C++ Name Mangling规则,包括GCC对C++代码中各个名称的编码方式。 本书适合有意深入理解C++对象模型、了解C++代码底层实现的读者阅读。阅读本书需要具备一定的C++基础知识。

图书摘要

相关图书

CMake构建实战:项目开发卷
CMake构建实战:项目开发卷
C++设计模式
C++设计模式
零基础学Qt 6编程
零基础学Qt 6编程
代码审计——C/C++实践
代码审计——C/C++实践
C++现代编程技术写给工程师的C++教程
C++现代编程技术写给工程师的C++教程
C++ Templates(第2版)中文版
C++ Templates(第2版)中文版

相关文章

相关课程