C++primer5th PDF

278 阅读14分钟

《C++primer5th》

链接: pan.baidu.com/s/18XEECPX5… 提取码: f66t

Stephen Prata曾在加利福尼亚的马林学院(肯特菲尔德)教授天文学、物理学和程序设计课程,现已退休。他在加州理工学院获得学士学位,在加州大学伯克利分校获得博士学位。他最早接触程序设计,是为了利用计算机给星团建模。Stephen撰写和与他人合著了十几本书籍,其中包括C++ Primer Plus和C Primer Plus。

1章 预备知识 1

11 C++简介 1

12 C++简史 2

121 C语言 2

122 C语言编程原理 2

123 面向对象编程 3

124 C++和泛型编程 3

125 C++的起源 4

13 可移植性和标准 5

131 C++的发展 5

132 本书遵循的C++标准 6

14 程序创建的技巧 6

141 创建源代码文件 6

142 编译和链接 7

15 总结 10

第 2章 开始学习C++ 11

21 进入C++ 11

211 main( )函数 12

212 C++注释 14

213 C++预处理器和iostream文件 14

214 头文件名 15

215 名称空间 15

216 使用cout进行C++输出 16

217 C++源代码的格式化 17

22 C++语句 18

221 声明语句和变量 19

222 赋值语句 20

223 cout的新花样 20

23 其他C++语句 21

231 使用cin 21

232 使用cout进行拼接 21

233 类简介 22

24 函数 23

241 使用有返回值的函数 23

242 函数变体 25

243 用户定义的函数 26

244 用户定义的有返回值的函数 28

245 在多函数程序中使用using编译指令 29

25 总结 30

26 复习题 30

27 编程练习 303章 处理数据 32

31 简单变量 32

311 变量名 33

312 整型 34

313 整型shortintlonglong long 34

314 无符号类型 37

315 选择整型类型 38

316 整型字面值 39

317 C++如何确定常量的类型 40

318 char类型:字符和小整数 41

319 bool类型 46

32 const限定符 46

33 浮点数 47

331 书写浮点数 47

332 浮点类型 48

333 浮点常量 49

334 浮点数的优缺点 49

34 C++算术运算符 50

341 运算符优先级和结合性 51

342 除法分支 51

343 求模运算符 52

344 类型转换 53

345 C++11中的auto声明 56

35 总结 57

36 复习题 57

37 编程练习 584章 复合类型 59

41 数组 59

411 程序说明 61

412 数组的初始化规则 61

413 C++11数组初始化方法 62

42 字符串 62

421 拼接字符串常量 63

422 在数组中使用字符串 63

423 字符串输入 64

424 每次读取一行字符串输入 65

425 混合输入字符串和数字 67

43 string类简介 68

431 C++11字符串初始化 69

432 赋值、拼接和附加 69

433 string类的其他操作 70

434 string类I/O 71

435 其他形式的字符串字面值 72

44 结构简介 73

441 在程序中使用结构 74

442 C++11结构初始化 75

443 结构可以将string类作为成员吗 75

444 其他结构属性 76

445 结构数组 77

446 结构中的位字段 78

45 共用体 78

46 枚举 79

461 设置枚举量的值 80

462 枚举的取值范围 80

47 指针和自由存储空间 80

471 声明和初始化指针 82

472 指针的危险 84

473 指针和数字 84

474 使用new来分配内存 84

475 使用delete释放内存 86

476 使用new来创建动态数组 86

48 指针、数组和指针算术 88

481 程序说明 89

482 指针小结 90

483 指针和字符串 92

484 使用new创建动态结构 94

485 自动存储、静态存储和动态存储 96

49 类型组合 97

410 数组的替代品 99

4101 模板类vector 99

4102 模板类array(C++11) 99

4103 比较数组、vector对象和array对象 99

411 总结 101

412 复习题 101

413 编程练习 1025章 循环和关系表达式 104

51 for循环 104

511 for循环的组成部分 105

512 回到for循环 109

513 修改步长 110

514 使用for循环访问字符串 110

515 递增运算符(++)和递减运算符( ) 111

516 副作用和顺序点 112

517 前缀格式和后缀格式 112

518 递增/递减运算符和指针 112

519 组合赋值运算符 113

5110 复合语句(语句块) 113

5111 其他语法技巧——逗号运算符 115

5112 关系表达式 116

5113 赋值、比较和可能犯的错误 117

5114 C-风格字符串的比较 118

5115 比较string类字符串 120

52 while循环 120

521 forwhile 121

522 等待一段时间:编写延时循环 123

53 do while循环 124

54 基于范围的for循环(C++11) 125

55 循环和文本输入 125

551 使用原始的cin进行输入 126

552 使用cin.get(char)进行补救 126

553 使用哪一个cin.get( ) 127

554 文件尾条件 128

555 另一个cin.get( )版本 129

56 嵌套循环和二维数组 131

561 初始化二维数组 132

562 使用二维数组 133

57 总结 134

58 复习题 134

59 编程练习 1356章 分支语句和逻辑运算符 137

61 if语句 137

611 if else语句 138

612 格式化if else语句 139

613 if else if else结构 140

62 逻辑表达式 141

621 逻辑OR运算符:|| 141

622 逻辑AND运算符:&& 142

623 用&&来设置取值范围 144

624 逻辑NOT运算符:! 145

625 逻辑运算符细节 146

626 其他表示方式 146

63 字符函数库cctype 147

64 :运算符 148

65 switch语句 149

651 将枚举量用作标签 151

652 switchif else 152

66 breakcontinue语句 153

67 读取数字的循环 154

68 简单文件输入/输出 157

681 文本I/O和文本文件 157

682 写入到文本文件中 158

683 读取文本文件 160

69 总结 163

610 复习题 163

611 编程练习 1657章 函数——C++的编程模块 167

71 复习函数的基本知识 167

711 定义函数 168

712 函数原型和函数调用 169

72 函数参数和按值传递 171

721 多个参数 172

722 另一个接受两个参数的函数 174

73 函数和数组 175

731 函数如何使用指针来处理数组 176

732 将数组作为参数意味着什么 176

733 更多数组函数示例 178

734 使用数组区间的函数 181

735 指针和const 182

74 函数和二维数组 185

75 函数和C-风格字符串 186

751 将C-风格字符串作为参数的函数 186

752 返回C-风格字符串的函数 187

76 函数和结构 188

761 传递和返回结构 188

762 另一个处理结构的函数示例 189

763 传递结构的地址 192

77 函数和string对象 194

78 函数与array对象 195

79 递归 196

791 包含一个递归调用的递归 196

792 包含多个递归调用的递归 197

710 函数指针 198

7101 函数指针的基础知识 199

7102 函数指针示例 200

7103 深入探讨函数指针 201

7104 使用typedef进行简化 204

711 总结 204

712 复习题 205

713 编程练习 2068章 函数探幽 208

81 C++内联函数 208

82 引用变量 210

821 创建引用变量 210

822 将引用用作函数参数 212

823 引用的属性和特别之处 214

824 将引用用于结构 216

825 将引用用于类对象 220

826 对象、继承和引用 222

827 何时使用引用参数 224

83 默认参数 225

84 函数重载 227

841 重载示例 228

842 何时使用函数重载 230

85 函数模板 230

851 重载的模板 232

852 模板的局限性 233

853 显式具体化 234

854 实例化和具体化 236

855 编译器选择使用哪个函数版本 237

856 模板函数的发展 241

86 总结 243

87 复习题 243

88 编程练习 2449章 内存模型和名称空间 246

91 单独编译 246

92 存储持续性、作用域和链接性 250

921 作用域和链接 250

922 自动存储持续性 250

923 静态持续变量 253

924 静态持续性、外部链接性 254

925 静态持续性、内部链接性 257

926 静态存储持续性、无链接性 258

927 说明符和限定符 260

928 函数和链接性 261

929 语言链接性 262

9210 存储方案和动态分配 262

93 名称空间 266

931 传统的C++名称空间 266

932 新的名称空间特性 267

933 名称空间示例 271

934 名称空间及其前途 274

94 总结 274

95 复习题 275

96 编程练习 276

第 10章 对象和类 278

101 过程性编程和面向对象编程 278

102 抽象和类 279

1021 类型是什么 279

1022 C++中的类 280

1023 实现类成员函数 283

1024 使用类 285

1025 修改实现 286

1026 小结 287

103 类的构造函数和析构函数 288

1031 声明和定义构造函数 288

1032 使用构造函数 289

1033 默认构造函数 290

1034 析构函数 290

1035 改进Stock类 291

1036 构造函数和析构函数小结 296

104 this指针 296

105 对象数组 300

106 类作用域 302

1061 作用域为类的常量 302

1062 作用域内枚举(C++11) 303

107 抽象数据类型 304

108 总结 307

109 复习题 307

1010 编程练习 308

第 11章 使用类 310

111 运算符重载 310

112 计算时间:一个运算符重载示例 311

1121 添加加法运算符 313

1122 重载限制 315

1123 其他重载运算符 316

113 友元 318

1131 创建友元 319

1132 常用的友元:重载<<运算符 320

114 重载运算符:作为成员函数还是非成员函数 324

115 再谈重载:一个矢量类 324

1151 使用状态成员 329

1152 为Vector类重载算术运算符 331

1153 对实现的说明 332

1154 使用Vector类来模拟随机漫步 332

116 类的自动转换和强制类型转换 334

1161 转换函数 338

1162 转换函数和友元函数 341

117 总结 343

118 复习题 344

119 编程练习 344

第 12章 类和动态内存分配 346

121 动态内存和类 346

1211 复习示例和静态类成员 346

1212 特殊成员函数 352

1213 回到Stringbad:复制构造函数的哪里出了问题 354

1214 Stringbad的其他问题:赋值运算符 356

122 改进后的新String类 357

1221 修订后的默认构造函数 357

1222 比较成员函数 358

1223 使用中括号表示法访问字符 359

1224 静态类成员函数 360

1225 进一步重载赋值运算符 360

123 在构造函数中使用new时应注意的事项 364

1231 应该和不应该 365

1232 包含类成员的类的逐成员复制 365

124 有关返回对象的说明 366

1241 返回指向const对象的引用 366

1242 返回指向非const对象的引用 366

1243 返回对象 367

1244 返回const对象 367

125 使用指向对象的指针 368

1251 再谈new和delete 369

1252 指针和对象小结 370

1253 再谈定位new运算符 371

126 复习各种技术 374

1261 重载<<运算符 374

1262 转换函数 375

1263 其构造函数使用new的类 375

127 队列模拟 375

1271 队列类 376

1272 Customer类 382

1273 ATM模拟 384

128 总结 387

129 复习题 388

1210 编程练习 389

第 13章 类继承 392

131 一个简单的基类 393

1311 派生一个类 394

1312 构造函数:访问权限的考虑 395

1313 使用派生类 397

1314 派生类和基类之间的特殊关系 398

132 继承:is-a关系 400

133 多态公有继承 400

134 静态联编和动态联编 409

1341 指针和引用类型的兼容性 409

1342 虚成员函数和动态联编 411

1343 有关虚函数注意事项 412

135 访问控制:protected 414

136 抽象基类 415

1361 应用ABC概念 416

1362 ABC理念 421

137 继承和动态内存分配 421

1371 第 一种情况:派生类不使用new 421

1372 第二种情况:派生类使用new 422

1373 使用动态内存分配和友元的继承示例 423

138 类设计回顾 427

1381 编译器生成的成员函数 427

1382 其他的类方法 428

1383 公有继承的考虑因素 429

1384 类函数小结 432

139 总结 433

1310 复习题 433

1311 编程练习 434

第 14章 C++中的代码重用 436

141 包含对象成员的类 436

1411 valarray类简介 437

1412 Student类的设计 437

1413 Student类示例 438

142 私有继承 443

1421 Student类示例(新版本) 443

1422 使用包含还是私有继承 447

1423 保护继承 448

1424 使用using重新定义访问权限 448

143 多重继承 449

1431 有多少Worker 452

1432 哪个方法 455

1433 MI小结 461

144 类模板 462

1441 定义类模板 462

1442 使用模板类 464

1443 深入探讨模板类 465

1444 数组模板示例和非类型参数 469

1445 模板多功能性 470

1446 模板的具体化 473

1447 成员模板 474

1448 将模板用作参数 476

1449 模板类和友元 477

14410 模板别名(C++11) 482

145 总结 482

146 复习题 483

147 编程练习 484

第 15章 友元、异常和其他 488

151 友元 488

1511 友元类 488

1512 友元成员函数 492

1513 其他友元关系 494

1514 共同的友元 495

152 嵌套类 495

1521 嵌套类和访问权限 496

1522 模板中的嵌套 497

153 异常 499

1531 调用abort() 500

1532 返回错误码 500

1533 异常机制 501

1534 将对象用作异常类型 504

1535 异常规范和C++11 506

1536 栈解退 506

1537 其他异常特性 510

1538 exception类 511

1539 异常、类和继承 514

15310 异常何时会迷失方向 517

15311 有关异常的注意事项 519

154 RTTI 520

1541 RTTI的用途 520

1542 RTTI的工作原理 521

155 类型转换运算符 526

156 总结 528

157 复习题 528

158 编程练习 529

第 16string类和标准模板库 530

161 string类 530

1611 构造字符串 530

1612 string类输入 533

1613 使用字符串 535

1614 string还提供了哪些功能 538

1615 字符串种类 539

162 智能指针模板类 539

1621 使用智能指针 540

1622 有关智能指针的注意事项 542

1623 unique_ptr为何优于auto_ptr 543

1624 选择智能指针 545

163 标准模板库 545

1631 模板类vector 546

1632 可对矢量执行的操作 547

1633 对矢量可执行的其他操作 550

1634 基于范围的for循环(C++11) 553

164 泛型编程 553

1641 为何使用迭代器 553

1642 迭代器类型 556

1643 迭代器层次结构 557

1644 概念、改进和模型 558

1645 容器种类 562

1646 关联容器 568

1647 无序关联容器(C++11) 572

165 函数对象 572

1651 函数符概念 573

1652 预定义的函数符 575

1653 自适应函数符和函数适配器 576

166 算法 577

1661 算法组 578

1662 算法的通用特征 578

1663 STL和string类 579

1664 函数和容器方法 579

1665 使用STL 581

167 其他库 583

1671 vector、valarray和array 583

1672 模板initializer_list(C++11) 586

1673 使用initializer_list 587

168 总结 588

169 复习题 589

1610 编程练习 590

第 17章 输入、输出和文件 592

171 C++输入和输出概述 592

1711 流和缓冲区 593

1712 流、缓冲区和iostream文件 594

1713 重定向 596

172 使用cout进行输出 597

1721 重载的<<运算符 597

1722 其他ostream方法 598

1723 刷新输出缓冲区 600

1724 用cout进行格式化 601

173 使用cin进行输入 611

1731 cin>>如何检查输入 612

1732 流状态 613

1733 其他istream类方法 616

1734 其他istream方法 620

174 文件输入和输出 622

1741 简单的文件I/O 623

1742 流状态检查和is_open() 625

1743 打开多个文件 625

1744 命令行处理技术 626

1745 文件模式 627

1746 随机存取 633

175 内核格式化 638

176 总结 640

177 复习题 641

178 编程练习 642

第 18章 探讨C++新标准 644

181 复习前面介绍过的C++11功能 644

1811 新类型 644

1812 统一的初始化 644

1813 声明 645

1814 智能指针 646

1815 异常规范方面的修改 647

1816 作用域内枚举 647

1817 对类的修改 647

1818 模板和STL方面的修改 648

1819 右值引用 649

182 移动语义和右值引用 650

1821 为何需要移动语义 650

1822 一个移动示例 651

1823 移动构造函数解析 654

1824 赋值 655

1825 强制移动 655

183 新的类功能 658

1831 特殊的成员函数 658

1832 默认的方法和禁用的方法 659

1833 委托构造函数 660

1834 继承构造函数 660

1835 管理虚方法:override和final 661

184 Lambda函数 662

1841 比较函数指针、函数符和Lambda函数 662

1842 为何使用lambda 664

185 包装器 666

1851 包装器function及模板的低效性 666

1852 修复问题 667

1853 其他方式 669

186 可变参数模板 669

1861 模板和函数参数包 669

1862 展开参数包 670

1863 在可变参数模板函数中使用递归 670

187 C++11新增的其他功能 672

1871 并行编程 672

1872 新增的库 672

1873 低级编程 673

1874 杂项 673

188 语言变化 674

1881 Boost项目 674

1882 TR1 674

1883 使用Boost 674

189 接下来的任务 675

1810 总结 675

1811 复习题 676

1812 编程练习 678


最后,这里为大家准备了几百本的互联网电子书,有需要的过来取吧。点击获取

本页书籍均来自网络,如有侵权,请联系我立即删除。我的邮箱:yaojianguolq@163.com