现代C++安全

现代C++安全
作 者: 约翰·拉科斯 维托里奥·罗密欧 罗斯蒂斯拉夫·赫列布尼科夫 利斯代尔·梅雷迪斯
出版社: 机械工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  约翰·拉科斯(John Lakos)是哥伦比亚大学计算机科学专业和电气工程专业双博士,本科获得麻省理工学院数学和计算机科学双学士学位,是彭博社全球C软件开发的高级架构师和导师,并拥有多项软件专利。他在2001年创建了彭博社BDE团队,该团队负责维护彭博社的全球C开发的开源基础库。他还曾在Mentor Graphics公司负责开发大型软件框架和高级ICCAD应用程序。他是C标准委员会的投票成员,是Large-Scale C Software Design和Large-Scale CVolume I: Process and Architecture的作者。维托里奥·罗密欧(Vittorio Romeo)是彭博社的高级软件工程师,负责构建关键任务的C中间件和C的相关培训。他还是许多开源C库和游戏的创建者,受邀在众多国际C会议上发表从游戏开发到模板元编程等主题演讲,并积极参与ISO C标准化推进工作。罗斯蒂斯拉夫·赫列布尼科夫(Rostislav Khlebnikov)博士是彭博社BDE团队的高级软件工程师,负责其中高性能C基础软件的开发、HTTP/2通信库,以及改进BDE库与标准库词汇类型的互操作性等工作。他也是C标准委员会的活跃成员。利斯代尔·梅雷迪斯(Alisdair Meredith)是彭博社BDE团队的高级软件工程师,C标准委员会的长期成员,并在2010年—2015年担任该委员会图书馆工作组主席。

内容简介

本书作者基于多年从事大型软件项目开发的经验,以模块化形式精心组织,阐述了如何有效地利用现代C的新特性和强大的语言功能,同时避开其中的潜在陷阱。本书还总结了C社区近十年来应用C11和 C14新特性的经验,通过使用来自真实代码库的示例说明每个新特性和关键问题,且给出了每个新特性的用例和潜在缺陷,可帮助读者在多样化的大型软件开发环境中做出高效且安全的设计决策。本书对于C开发人员、团队领导者和技术经理具有很高的参考价值。读完本书后,读者将会·理解 C11/14 每个特性的用途及其最有效的使用方法。·了解如何解决令人困扰的陷阱和烦人的边界样例(特殊情况时出现)。·了解哪些特性需要额外的培训、经验和同行评审。·获得有关编码标准和风格指南的知识,以满足组织需求。·逐步将现代C的能力恰当地引入目前已建立的代码库。

图书目录

目  录

译者序

序一

序二

第1章 引  言1

1.1 本书特点1

1.2 本书范围1

1.3 本书指导原则1

1.4 安全性2

1.5 安全特性2

1.6 有条件的安全特性2

1.7 不安全特性3

1.8 本书结构3

1.9 本书使用方式4

第2章 安 全 特 性5

2.1 C 115

2.1.1 属性语法:广义属性支持5

2.1.2 连续的>:连续的右尖括号10

2.1.3 decltype:提取表达式类型

   的操作符12

2.1.4 默认函数:为特殊成员函数

   使用=default16

2.1.5 委派构造:构造函数调用其

   他构造函数24

2.1.6 deleted 函数:对任意函数

   使用 =delete28

2.1.7 explicit:显式转换运算符32

2.1.8 函数作用域静态’11:线程

   安全的函数作用域静态变量36

2.1.9 局部类型’11:作为模板参

   数的局部/未命名类型46

2.1.10 long long:至少64位的整

    数类型49

2.1.11 noreturn:[[noreturn]]属性52

2.1.12 nullptr:空指针字面值关

    键字54

2.1.13 override:成员函数限定符57

2.1.14 原始字符串字面值:内容

    语法59

2.1.15 static_assert:编译时断言63

2.1.16 尾置返回:尾置函数返回

    类型69

2.1.17 Unicode:字符串字面值71

2.1.18 using关键字:类型/模板

    别名73

2.2 C 1476

2.2.1 聚合初始化’14:具有默认

    成员初始化器的聚合76

2.2.2 二进制字面值:0b前缀78

2.2.3 deprecated:[[deprecated]]

   属性81

2.2.4 数字分隔符:'83

2.2.5 变量模板:模板化的变量

   声明/定义86

第3章 有条件的安全特性92

3.1 C 1192

3.1.1 alignas说明符92

3.1.2 alignof操作符102

3.1.3 auto变量:自动推导类型的

   变量109

3.1.4 大括号初始化: {}121

3.1.5 constexpr函数:编译时可调

   用的函数147

3.1.6 constexpr变量:编译时可访

   问的变量175

3.1.7 默认成员初始化:默认类/

   联合成员初始化程序184

3.1.8 枚举类:强类型、限定作用

   域的枚举193

3.1.9 外部模板:显式实例化声明205

3.1.10 转发引用:T&&219

3.1.11 广义POD’11:平凡和

    标准布局类型234

3.1.12 继承构造函数:继承基类

    构造函数319

3.1.13 列表初始化:

    std::initializer_list330

3.1.14 lambda表达式:匿名函数

    对象/闭包343

3.1.15 noexcept操作符:询问一个

    表达式能否不抛出异常369

3.1.16 不透明的enum:不透明的

    枚举声明397

3.1.17 基于范围的循环:for循环408

3.1.18 右值引用:移动语义与&&428

3.1.19 底层类型’11:显式枚举

    的底层类型501

3.1.20 自定义字面值:用户定义的

    字面值操作符504

3.1.21 可变模板:可变参数模板528

3.2 C 14582

3.2.1 constexpr函数’14:减少

   constexpr函数的使用限制582

3.2.2 泛型lambda表达式:具备

   模板化调用运算符的lambda

   表达式587

3.2.3 lambda捕获:lambda捕获

   表达式598

第4章 不安全特性604

4.1 C 11604

4.1.1 carries_dependency:[[carries_

   dependency]]属性604

4.1.2 final:禁止重写和派生609

4.1.3 友元’11:对友元声明的

   拓展624

4.1.4 内联命名空间:透明的嵌套

   命名空间639

4.1.5 noexcept说明符:noexcept

   函数规范658

4.1.6 引用限定符:引用限定的

   成员函数698

4.1.7 union’11:具有非平凡成

   员的联合体712

4.2 C 14716

4.2.1 auto返回:函数返回类型

   推导716

4.2.2 decltype(auto):使用decltype

   语义推导类型730

参考文献736