当前位置:首页 > 工业技术
深入理解C++11  C++11新特性解析与应用
深入理解C++11  C++11新特性解析与应用

深入理解C++11 C++11新特性解析与应用PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:关孝峰著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2013
  • ISBN:9787111426608
  • 页数:308 页
图书介绍:本书的主要内容分为四大部分:1. 更称手(handy)的C++:C++在C的基础上引入了形如模板这样的特性,使得C++语言的代码虽然精准,却也更为冗长。C++11在这方面做了不少努力,提高了程序员的编程效率。 2. 语言特性改进:C++11在语言特性的改进上大概可以分为两种:一种是可用性,即通过一些语法、语义或者内置类型的加强、改变,较为便利地解决了一些之前使用C++的用户不得不处理的地方,增强代码的可读性。二是通过引入独立的语言特性,来弥补之前C++的缺陷、提高代码撰写便利性。 3. 性能提升:C++11通过引入了右值引用等特性进一步提高运算性能。此外,如对齐(alignment),POD的标准化设定,也会在这里讲解。 4. 高级话题:、C++11、加入了对并行的支持。此外,编译器指示等与系统底层交道的细节问题,也会在这里描述。其它的话题如对C99标准的改进,也将酌情考虑加入。而对于C++11的标准库,本书将不予提及。
《深入理解C++11 C++11新特性解析与应用》目录

第1章 新标准的诞生 1

1.1 署光:C++11标准的诞生 1

1.1.1 C++11/C++0x(以及C11/C1x)——新标准诞生 1

1.1.2 什么是C++11/C++0x 2

1.1.3 新C++语言的设计目标 3

1.2 今时今日的C++ 5

1.2.1 C++的江湖地位 5

1.2.2 C++11语言变化的领域 5

1.3 C++11特性的分类 7

1.4 C++特性一览 11

1.4.1 稳定性与兼容性之间的抉择 11

1.4.2 更倾向于使用库而不是扩展语言来实现特性 12

1.4.3 更倾向于通用的而不是特殊的手段来实现特性 13

1.4.4 专家新手一概支持 13

1.4.5 增强类型的安全性 14

1.4.6 与硬件紧密合作 14

1.4.7 开发能够改变人们思维方式的特性 15

1.4.8 融入编程现实 16

1.5 本书的约定 17

1.5.1 关于一些术语的翻译 17

1.5.2 关于代码中的注释 17

1.5.3 关于本书中的代码示例与实验平台 18

第2章 保证稳定性和兼容性 19

2.1 保持与C99兼容 19

2.1.1 预定义宏 19

2.1.2 __func__预定义标识符 20

2.1.3 _Pragma操作符 22

2.1.4 变长参数的宏定义以及__VA_ARGS__ 22

2.1.5 宽窄字符串的连接 23

2.2 long long整型 23

2.3 扩展的整型 25

2.4 宏__cplusplus 26

2.5 静态断言 27

2.5.1 断言:运行时与预处理时 27

2.5.2 静态断言与static assert 28

2.6 noexcept修饰符与noexcept操作符 32

2.7 快速初始化成员变量 36

2.8 非静态成员的sizeof 39

2.9 扩展的friend语法 40

2.10 final/override控制 44

2.11 模板函数的默认模板参数 48

2.12 外部模板 50

2.12.1 为什么需要外部模板 50

2.12.2 显式的实例化与外部模板的声明 52

2.13 局部和匿名类型作模板实参 54

2.14 本章小结 55

第3章 通用为本,专用为末 57

3.1 继承构造函数 57

3.2 委派构造函数 62

3.3 右值引用:移动语义和完美转发 68

3.3.1 指针成员与拷贝构造 68

3.3.2 移动语义 69

3.3.3 左值、右值与右值引用 75

3.3.4 std::move:强制转化为右值 80

3.3.5 移动语义的一些其他问题 82

3.3.6 完美转发 85

3.4 显式转换操作符 89

3.5 列表初始化 92

3.5.1 初始化列表 92

3.5.2 防止类型收窄 96

3.6 POD类型 98

3.7 非受限联合体 106

3.8 用户自定义字面量 110

3.9 内联名字空间 113

3.10 模板的别名 118

3.11 一般化的SFINEA规则 119

3.12 本章小结 121

第4章 新手易学,老兵易用 123

4.1 右尖括号>的改进 123

4.2 auto类型推导 124

4.2.1 静态类型、动态类型与类型推导 124

4.2.2 auto的优势 126

4.2.3 auto的使用细则 130

4.3 decltype 134

4.3.1 typeid与decltype 134

4.3.2 decltype的应用 136

4.3.3 decltype推导四规则 140

4.3.4 cv限制符的继承与冗余的符号 143

4.4 追踪返回类型 145

4.4.1 追踪返回类型的引入 145

4.4.2 使用追踪返回类型的函数 146

4.5 基于范围的for循环 150

4.6 本章小结 153

第5章 提高类型安全 155

5.1 强类型枚举 155

5.1.1 枚举:分门别类与数值的名字 155

5.1.2 有缺陷的枚举类型 156

5.1.3 强类型枚举以及C++11对原有枚举类型的扩展 160

5.2 堆内存管理:智能指针与垃圾回收 163

5.2.1 显式内存管理 163

5.2.2 C++11的智能指针 164

5.2.3 垃圾回收的分类 167

5.2.4 C++与垃圾回收 169

5.2.5 C++11与最小垃圾回收支持 170

5.2.6 垃圾回收的兼容性 172

5.3 本章小结 173

第6章 提高性能及操作硬件的能力 174

6.1 常量表达式 174

6.1.1 运行时常量性与编译时常量性 174

6.1.2 常量表达式函数 176

6.1.3 常量表达式值 178

6.1.4 常量表达式的其他应用 180

6.2 变长模板 183

6.2.1 变长函数和变长的模板参数 183

6.2.2 变长模板:模板参数包和函数参数包 185

6.2.3 变长模板:进阶 189

6.3 原子类型与原子操作 196

6.3.1 并行编程、多线程与C++11 196

6.3.2 原子操作与C++11原子类型 197

6.3.3 内存模型,顺序一致性与memory_order 203

6.4 线程局部存储 214

6.5 快速退出:quick_exit与at_quick_exit 216

6.6 本章小结 219

第7章 为改变思考方式而改变 220

7.1 指针空值——nullptr 220

7.1.1 指针空值:从0到NULL,再到nullptr 220

7.1.2 nullptr和nullptr_t 223

7.1.3 一些关于nullptr规则的讨论 225

7.2 默认函数的控制 227

7.2.1 类与默认函数 227

7.2.2 “=default”与“=deleted” 230

7.3 lambda函数 234

73.1 lambda的一些历史 234

7.3.2 C++11中的lambda函数 235

7.3.3 lambda与仿函数 238

7.3.4 lambda的基础使用 240

7.3.5 关于lambda的一些问题及有趣的实验 243

7.3.6 lambda与STL 247

7.3.7 更多的一些关于lambda的讨论 254

7.4 本章小结 256

第8章 融入实际应用 258

8.1 对齐支持 258

8.1.1 数据对齐 258

8.1.2 C++11的alignof和alignas 261

8.2 通用属性 267

8.2.1 语言扩展到通用属性 267

8.2.2 C++11的通用属性 268

8.2.3 预定义的通用属性 270

8.3 Unicode支持 274

8.3.1 字符集、编码和Unicode 274

8.3.2 C++11中的Unicode支持 276

8.3.3 关于Unicode的库支持 280

8.4 原生字符串字面量 284

8.5 本章小结 286

附录A C++11对其他标准的不兼容项目 287

附录B 弃用的特性 294

附录C 编译器支持 301

附录D 相关资源 304

相关图书
作者其它书籍
返回顶部