![]()
编辑推荐 在当今软件开发领域,安全性已成为不可忽视的关键因素,尤其是对于使用C++这样强大而复杂的编程语言的项目而言。正是基于这样的背景,《现代C++安全》一书应运而生,它不仅是一本技术指南,更是每一位C++开发者不可或缺的安全宝典。 一、权威性与深度并重 本书由C++安全领域的资深专家精心撰写,确保了内容的权威性和准确性。作者凭借其深厚的专业背景和丰富的实践经验,深入剖析了现代C++编程中遇到的各种安全挑战,从内存管理、并发编程到现代C++特性的安全应用,无所不包。这种深度和广度的结合,使得本书成为C++安全领域的标杆之作。 二、实战导向,学以致用 与许多理论性强的书籍不同,《现代C++安全》注重实战应用。书中通过大量真实案例和详细的代码示例,展示了如何在日常开发中识别和避免安全漏洞。这种教学方式不仅让读者易于理解,更能够激发他们的动手能力和创新思维。读者在阅读过程中,不仅能够学到知识,更能够将这些知识转化为实际的编程技能,真正做到学以致用。 三、紧跟技术前沿,引领趋势 随着C++标准的不断更新,新的安全特性和很好实践层出不穷。《现代C++安全》紧跟这一趋势,详细介绍了C++11、C++14、C++17及后续版本中引入的安全相关特性。通过阅读本书,读者可以掌握近期新的C++安全编程技术,保持与行业前沿的同步。这种前瞻性的视角,使得本书成为引领C++安全编程趋势的重要力量。 综上所述,《现代C++安全》是一本集权威性、实战性和前瞻性于一体的优秀著作。它不仅能够帮助C++开发者提升编程安全能力,更能够引领他们走向C++安全编程的新高度。因此,我们强烈推荐本书给每一位关注C++安全编程的开发者。 内容推荐 本书作者基于多年从事大型软件项目开发的经验,以模块化形式精心组织,阐述了如何有效地利用现代C++的新特性和强大的语言功能,同时避开其中的潜在陷阱。本书还总结了C++社区近十年来应用C++11和 C++14新特性的经验,通过使用来自真实代码库的示例说明每个新特性和关键问题,且给出了每个新特性的用例和潜在缺陷,可帮助读者在多样化的大型软件开发环境中做出高效且安全的设计决策。本书对于C++开发人员、团队领导者和技术经理具有很高的参考价值。 读完本书后,读者将会 ·理解 C++11/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_list<T>330 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 |