![]()
内容推荐 本书通过具体示例演示大规模C++开发的基本设计设想,为各种规模的项目奠定基础,并演示成功进行大规模实际开发所需的过程、方法、技术和工具。通过阅读本书,读者可以逐步改变自己的设计和开发方法。本书旨在使用软件从业人员熟悉的C++构件来解决现实问题,同时确定(并激发)现代C++替代方案。作者利用超过30年的构建大规模、关键任务的企业系统的实践经验,展示了如何创建和增长软件资本。 本书专为有经验的C++软件开发者和系统设计师编写,从事大型软件开发工作的架构师或项目负责人等也可以通过阅读本书解决实际工作中的问题。 作者简介 约翰·拉科斯(John Lakos),《大规模C++程序设计》(Large-Scale C++Software Design)一书的作者,任职于彭博有限合伙企业,担任高级架构师,同时是全球C++软件开发顾问。2001年他成立了彭博的BDE工作组,按照他的基于组件的方法论、过程和架构来开发细粒度的、可复用的C++软件。他是ACCU、C++Now、CppCon和Meeting C++等业内知名技术会议的常客,经常发表技术演讲。他自2006年开始任C++标准委员会的投票成员,新一代C++的成型有他的一份功劳,包括C++11的值语义、C++17的PMR内存分配器和C++20的模块。他于1996年出版的《大规模C++程序设计》一书是C++大型系统设计的开山之作,至今还是这方面唯一的权威参考书。 目录 第0章 动机 0.1 目标:进度更快、产品更好、预算更低 0.2 应用软件与库软件 0.3 协作式软件与可复用软件 0.4 层次化可复用软件 0.5 易延展软件与稳定软件 0.6 物理设计的关键作用 0.7 物理形式统一的软件:组件 0.8 对层次化复用的量化:一个类比 0.9 软件资本 0.10 增大投入 0.11 保持警觉 0.12 小结 第1章 编译器、连接器和组件 1.1 知识就是力量:细节决定成败 1.1.1 “Hello World!” 1.1.2 创建C++程序 1.1.3 头文件的作用 1.2 C++程序的编译和连接 1.2.1 构建流程:编译器和连接器的使用 1.2.2 目标文件(.o)的经典原子性 1.2.3 .o文件中的节和弱符号 1.2.4 静态库 1.2.5 “单例”注册表的例子 1.2.6 库间依赖 1.2.7 连接顺序和构建时行为 1.2.8 连接顺序和运行时行为 1.2.9 共享(动态连接)库 1.3 声明、定义和连结 1.3.1 声明与定义 1.3.2 (逻辑的)连结与(物理的)连接 1.3.3 需要了解连接工具 1.3.4 物理“连结”的另一种定义:绑结 1.3.5 连接器运作的更多细节 1.3.6 对一些需要全程序范围内地址唯一的实体的介绍 1.3.7 客户编译器需要看到定义的源代码的构件 1.3.8 声明并不一定要带上定义才能起作用 1.3.9 客户编译器通常需要看到类定义 1.3.10 客户编译器必须看到定义的源代码的其他实体 1.3.11 枚举具有外连结,但又会怎样 1.3.12 内联函数略有特殊 1.3.13 函数模板和类模板 1.3.14 函数模板和显式特化 1.3.15 类模板及其偏特化 1.3.16 extern模板 1.3.17 用工具来理解单一定义规则和绑结 1.3.18 命名空间 1.3.19 对const实体默认连结的阐释 1.3.20 本节小结 1.4 头文件 1.5 包含指令和包含保护符 1.5.1 包含指令 1.5.2 内置的包含保护符 1.5.3 外置的包含保护符(已废弃) 1.6 从.h/.cpp文件对到组件 …… 第2章 打包和设计规则 第3章 物理设计和分解 参考文献 |