C++新经典:对象模型
- ISBN:9787302551263
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:264
- 出版时间:2020-06-01
- 条形码:9787302551263 ; 978-7-302-55126-3
本书特色
书中主题 C++对象知识:对象结构的发展及演化、所占空间、各种构造函数的语义等、成员初始化列表等。 C++虚函数:虚函数表、虚函数表指针、多重继承虚函数表分析、辅助工具介绍等。 C++数据语义:数据成员布局和存取、多种继承关系下数据成员的布局、多层继承结构时虚基类表内容分析、this指针调整等。 C++函数语义:成员函数调用方式、静态动态绑定、多态性体现、虚析构函数成因剖析、inline函数详解等。 C++对象构造语义:对象构造顺序、对象复制及析构语义、局部和全局对象的构造与析构,临时对象、模板实例化等。 环境标准 程序可以运行在Visual Studio、g++编译环境。书中全部实例通过Visual Studio 2019编译环境演示、部分实例也通过g++进行差异化演示。
内容简介
本书是一部介绍C++对象模型知识的书,意在探究C++幕后的秘密,讲述C++编译器的故事。内容涉及很多不被常人所知的C++对象内部工作原理以及底层的一些具体实现机制方面的知识。 本书共分为7章: 章介绍书中范例所涉及的演示环境搭建、如何创建基本的C++程序,以及对程序进行跟踪和断点调试的方法。 第2章的主题是对象,包括以对象所占内存大小为讲解切入点详述对象结构的发展和演化; 构造、拷贝构造、移动构造函数语义; 深浅拷贝、成员初始化列表等内容。 第3章的主题是虚函数,包括虚函数表指针、虚函数表的概念和细节; 更进一步涉及多重继承的虚函数表分析和各种辅助工具的讲解。 第4章的主题是数据语义学,包括类中的数据成员布局、数据成员存取,涉及单一继承、单类单继承、多重继承等情况下的数据成员布局; 二层、三层结构时虚基类表内容、与this指针调整等问题。 第5章的主题是函数语义学,包括普通成员函数、虚函数、静态成员函数调用方式; 静态、动态绑定以及多态性的详细体现分析和析构函数必须是虚函数原因的着重解释; 多重继承第二虚基类详谈、RTTI实现原理、inline函数细说等内容。 第6章的主题是对象构造语义学,包括对象构造顺序,对象复制、析构函数语义; 局部、全局对象的构造和析构,临时对象详细探讨等内容。 第7章的主题是模板实例化语义学,重点对模板的实例化进行了详细的分析。 这是一本C++进阶类图书,要求学习者具备一定的C++开发基础,适合作为C++编程人员的参考读物。
目录
目录
第1章演示环境介绍和准备
1.1演示环境搭建说明
1.2创建*基本的能运行的C++程序
1.3Visual Studio中程序的调试方法
第2章对象
2.1类对象所占用的空间
2.2对象结构的发展和演化
2.3this指针调整
2.4分析obj(目标文件)与构造函数语义
2.5拷贝构造函数语义与移动构造函数语义
2.5.1拷贝构造函数语义
2.5.2移动构造函数语义
2.6程序转换语义
2.6.1定义时初始化对象
2.6.2参数的初始化
2.6.3返回值初始化
2.7程序的优化
2.7.1从开发者层面的优化
2.7.2从编译器层面的优化
2.8程序优化续、拷贝构造函数续与深浅拷贝
2.8.1程序优化续
2.8.2拷贝构造续
2.8.3深浅拷贝
2.9成员初始化列表
2.9.1何时必须用成员初始化列表
2.9.2使用初始化列表的优势
2.9.3初始化列表的细节探究
第3章虚函数
3.1虚函数表指针位置分析
3.2继承关系作用下虚函数的手工调用
3.3虚函数表分析
3.4多重继承虚函数表分析
3.5辅助工具与vptr、vtbl创建时机
3.5.1使用辅助工具查看虚函数表
3.5.2虚函数表的创建时机
3.6单纯的类不纯时引发的虚函数调用问题
第4章数据语义学
4.1数据成员绑定时机
4.1.1成员函数函数体的解析时机(整个类定义完毕后)
4.1.2成员函数参数类型的确定时机(*近碰到原则)
4.2进程内存空间布局
4.3数据成员布局
4.3.1观察成员变量地址规律
4.3.2边界调整与字节对齐
4.3.3成员变量偏移值的打印
4.4数据成员的存取
4.4.1静态成员变量的存取
4.4.2非静态成员变量的存取
4.5单一继承下的数据成员布局
4.6单类单继承虚函数下的数据成员布局
4.6.1单个类带虚函数的数据成员布局
4.6.2单一继承父类带虚函数的数据成员布局
4.6.3单一继承父类不带虚函数的数据成员布局
4.7多重继承数据布局与this调整深谈
4.7.1单一继承数据成员布局this指针偏移知识补充
4.7.2多重继承且父类都带虚函数的数据成员布局
4.8虚基类问题的提出和初探
4.8.1虚基类(虚继承/虚派生)问题的提出
4.8.2虚基类初探
4.9两层结构时虚基类表内容分析
4.9.1虚基类表内容之5~8字节内容分析
4.9.2各种形式的继承
4.9.3虚基类表内容之1~4字节内容分析
4.10三层结构时虚基类表内容分析与虚基类设计原由
4.10.1三层结构时虚基类表内容分析
4.10.2虚基类为什么这样设计
4.11成员变量地址、偏移与指针等重申
4.11.1对象成员变量内存地址及其指针
4.11.2成员变量的偏移值及其指针
4.11.3成员变量指针和不指向任何成员变量的成员变量指针
第5章函数语义学
5.1普通成员函数调用方式
5.2虚成员函数与静态成员函数调用方式
5.2.1虚成员函数调用方式
5.2.2静态成员函数调用方式
5.3虚函数地址问题的vcall引入
5.4静动态类型、绑定、坑点与多态体现深谈
5.4.1静态类型和动态类型
5.4.2静态绑定和动态绑定
5.4.3继承的非虚函数坑
5.4.4虚函数的动态绑定
5.4.5重新定义虚函数的缺省参数坑
5.4.6C++中的多态性
5.5单继承虚函数趣味性测试和回顾
5.5.1单继承下的虚函数
5.5.2回顾和一些小试验
5.6多继承虚函数深释、第二基类与虚析构必加
5.6.1多继承下的虚函数
5.6.2如何成功删除用第二基类指针new出来的子类对象
5.6.3父类非虚析构函数时导致的内存泄露演示
5.7多继承第二基类虚函数支持与虚继承带虚函数
5.7.1多重继承第二基类对虚函数支持的影响(this指针调整作用)
5.7.2虚继承下的虚函数
5.8RTTI(运行时类型识别)回顾与存储位置简介
5.8.1RTTI(运行时类型识别)简单回顾
5.8.2RTTI实现原理
5.8.3vptr、vtbl与RTTI的 type_info信息创建时机
5.9函数调用与继承关系性能
5.9.1函数调用中编译器的循环代码优化
5.9.2继承关系深度增加,开销也增加
5.9.3继承关系深度增加,虚函数导致的开销增加
5.10指向成员函数的指针和vcall
5.10.1不用类对象能否调用类的虚函数和普通成员函数
5.10.2指向成员函数的指针
5.10.3指向虚成员函数的指针和vcall
5.10.4vcall在继承关系中的体现
5.11inline函数回顾和扩展
5.11.1inline函数回顾
5.11.2inline扩展
第6章对象构造语义学
6.1继承体系下的对象构造
6.1.1对象的构造顺序
6.1.2虚函数
6.1.3构造函数中对虚函数的调用
6.2对象复制语义学与析构函数语义学
6.2.1对象的默认复制行为
6.2.2拷贝赋值运算符与拷贝构造函数
6.2.3如何禁止对象的拷贝构造和赋值
6.2.4析构函数语义
6.3局部对象、全局对象的构造和析构
6.3.1局部对象的构造和析构
6.3.2全局对象的构造和析构
6.4局部静态对象、对象数组构造析构和内存分配
6.4.1局部静态对象的构造和析构
6.4.2局部静态对象数组的内存分配
6.5new、delete运算符与内存高级话题
6.6临时性对象的详细探讨
6.6.1拷贝构造函数相关的临时性对象
6.6.2拷贝赋值运算符相关的临时性对象
6.6.3直接运算产生的临时性对象
第7章模板实例化语义学
7.1模板及其实例化详细分析
7.1.1函数模板
7.1.2类模板的实例化分析
7.1.3多个源文件中使用类模板
7.2炫技写法
7.2.1不能被继承的类
7.2.2类外调用私有虚成员函数
后记
作者简介
王健伟 男,1976年9月生,网名狂想(KuangXiang),1995年毕业于哈尔滨工程大学计算机及应用专业,拥有20多年软件开发经验,参与开发过数十个实际项目,涉及网络通信、网络安全、网络游戏等领域,具备极其深厚的软件开发实战经验。曾参与创办深圳知名网络安全公司安络科技有限公司,是中国首套网络安全在线扫描评估系统项目负责人、全球同服独立游戏《冒险之路》制作人。
-
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥77.4¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
UN NX 12.0多轴数控编程案例教程
¥25.8¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0