C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus电子书下载地址
- 文件名
- [epub 下载] C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus epub格式电子书
- [azw3 下载] C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus azw3格式电子书
- [pdf 下载] C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus pdf格式电子书
- [txt 下载] C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus txt格式电子书
- [mobi 下载] C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus mobi格式电子书
- [word 下载] C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus word格式电子书
- [kindle 下载] C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus kindle格式电子书
寄语:
新华书店正版,关注店铺成为会员可享店铺专属优惠,团购客户请咨询在线客服!
内容简介:
这本久负盛名的C++经典教程,时隔八年之久,终于迎来少有的重大升级。除令全球无数程序员从中受益,甚至为之迷醉的――C++大师Stanley B. Lippman的丰富实践经验,C++标准委员会原负责人Josée Lajoie对C++标准的深入理解,以及C++先驱Barbara E. Moo在C++教学方面的真知灼见外,更是基于全新的C++11标准进行了全面而的内容更新。非常难能可贵的是,书中所有示例均全部采用C++11标准改写,这在经典升级版中极其罕见――充分体现了C++语言的重大进展及其全面实践。书中丰富的教学辅助内容、醒目的知识点提示,以及精心组织的编程示范,让这本书在C++领域的权威地位更加不可动摇。
无论是初学者入门,或是中高级程序员提升使用,本书均为不容置疑的优选。
书籍目录:
第1章 开始 1
1.1 编写一个简单的C++程序 2
1.1.1 编译、运行程序 3
1.2 初识输入输出 5
1.3 注释简介 8
1.4 控制流 10
1.4.1 while语句 10
1.4.2 for语句 11
1.4.3 读取数量不定的输入数据 13
1.4.4 if语句 15
1.5 类简介 17
1.5.1 Sales_item类 17
1.5.2 初识成员函数 20
1.6 书店程序 21
小结 23
术语表 23
第Ⅰ部分 C++基础 27
第2章 变量和基本类型 29
2.1 基本内置类型 30
2.1.1 算术类型 30
2.1.2 类型转换 32
2.1.3 字面值常量 35
2.2 变量 38
2.2.1 变量定义 38
2.2.2 变量声明和定义的关系 41
2.2.3 标识符 42
2.2.4 名字的作用域 43
2.3 复合类型 45
2.3.1 引用 45
2.3.2 指针 47
2.3.3 理解复合类型的声明 51
2.4 const限定符 53
2.4.1 const的引用 54
2.4.2 指针和const 56
2.4.3 顶层const 57
2.4.4 constexpr和常量表达式 58
2.5 处理类型 60
2.5.1 类型别名 60
2.5.2 auto类型说明符 61
2.5.3 decltype类型指示符 62
2.6 自定义数据结构 64
2.6.1 定义Sales_data类型 64
2.6.2 使用Sales_data类 66
2.6.3 编写自己的头文件 67
小结 69
术语表 69
第3章 字符串、向量和数组 73
3.1 命名空间的using声明 74
3.2 标准库类型string 75
3.2.1 定义和初始化string对象 76
3.2.2 string对象上的操作 77
3.2.3 处理string对象中的字符 81
3.3 标准库类型vector 86
3.3.1 定义和初始化vector对象 87
3.3.2 向vector对象中添加元素 90
3.3.3 其他vector操作 91
3.4 迭代器介绍 95
3.4.1 使用迭代器 95
3.4.2 迭代器运算 99
3.5 数组 101
3.5.1 定义和初始化内置数组 101
3.5.2 访问数组元素 103
3.5.3 指针和数组 105
3.5.4 C风格字符串 109
3.5.5 与旧代码的接口 111
3.6 多维数组 112
小结 117
术语表 117
第4章 表达式 119
4.1 基础 120
4.1.1 基本概念 120
4.1.2 优先级与结合律 121
4.1.3 求值顺序 123
4.2 算术运算符 124
4.3 逻辑和关系运算符 126
4.4 赋值运算符 129
4.5 递增和递减运算符 131
4.6 成员访问运算符 133
4.7 条件运算符 134
4.8 位运算符 135
4.9 sizeof运算符 139
4.10 逗号运算符 140
4.11 类型转换 141
4.11.1 算术转换 142
4.11.2 其他隐式类型转换 143
4.11.3 显式转换 144
4.12 运算符优先级表 147
小结 149
术语表 149
第5章 语句 153
5.1 简单语句 154
5.2 语句作用域 155
5.3 条件语句 156
5.3.1 if语句 156
5.3.2 switch语句 159
5.4 迭代语句 165
5.4.1 while语句 165
5.4.2 传统的for语句 166
5.4.3 范围for语句 168
5.4.4 do while语句 169
5.5 跳转语句 170
5.5.1 break语句 170
5.5.2 continue语句 171
5.5.3 goto语句 172
5.6 try语句块和异常处理 172
5.6.1 throw表达式 173
5.6.2 try语句块 174
5.6.3 标准异常 176
小结 178
术语表 178
第6章 函数 181
6.1 函数基础 182
6.1.1 局部对象 184
6.1.2 函数声明 186
6.1.3 分离式编译 186
6.2 参数传递 187
6.2.1 传值参数 187
6.2.2 传引用参数 188
6.2.3 const形参和实参 190
6.2.4 数组形参 193
6.2.5 main:处理命令行选项 196
6.2.6 含有可变形参的函数 197
6.3 返回类型和return语句 199
6.3.1 无返回值函数 200
6.3.2 有返回值函数 200
6.3.3 返回数组指针 205
6.4 函数重载 206
6.4.1 重载与作用域 210
6.5 特殊用途语言特性 211
6.5.1 默认实参 211
6.5.2 内联函数和constexpr函数 213
6.5.3 调试帮助 215
6.6 函数匹配 217
6.6.1 实参类型转换 219
6.7 函数指针 221
小结 225
术语表 225
第7章 类 227
7.1 定义抽象数据类型 228
7.1.1 设计Sales_data类 228
7.1.2 定义改进的Sales_data类 230
7.1.3 定义类相关的非成员函数 234
7.1.4 构造函数 235
7.1.5 拷贝、赋值和析构 239
7.2 访问控制与封装 240
7.2.1 友元 241
7.3 类的其他特性 243
7.3.1 类成员再探 243
7.3.2 返回*this的成员函数 246
7.3.3 类类型 249
7.3.4 友元再探 250
7.4 类的作用域 253
7.4.1 名字查找与类的作用域 254
7.5 构造函数再探 257
7.5.1 构造函数初始值列表 258
7.5.2 委托构造函数 261
7.5.3 默认构造函数的作用 262
7.5.4 隐式的类类型转换 263
7.5.5 聚合类 266
7.5.6 字面值常量类 267
7.6 类的静态成员 268
小结 273
术语表 273
第Ⅱ部分 C++标准库 275
第8章 IO库 277
8.1 IO类 278
8.1.1 IO对象无拷贝或赋值 279
8.1.2 条件状态 279
8.1.3 管理输出缓冲 281
8.2 文件输入输出 283
8.2.1 使用文件流对象 284
8.2.2 文件模式 286
8.3 string流 287
8.3.1 使用istringstream 287
8.3.2 使用ostringstream 289
小结 290
术语表 290
第9章 顺序容器 291
9.1 顺序容器概述 292
9.2 容器库概览 294
9.2.1 迭代器 296
9.2.2 容器类型成员 297
9.2.3 begin和end成员 298
9.2.4 容器定义和初始化 299
9.2.5 赋值和swap 302
9.2.6 容器大小操作 304
9.2.7 关系运算符 304
9.3 顺序容器操作 305
9.3.1 向顺序容器添加元素 305
9.3.2 访问元素 309
9.3.3 删除元素 311
9.3.4 特殊的forward_list操作 312
9.3.5 改变容器大小 314
9.3.6 容器操作可能使迭代器失效 315
9.4 vector对象是如何增长的 317
9.5 额外的string操作 320
9.5.1 构造string的其他方法 321
9.5.2 改变string的其他方法 322
9.5.3 string搜索操作 325
9.5.4 compare函数 327
9.5.5 数值转换 327
9.6 容器适配器 329
小结 332
术语表 332
第10章 泛型算法 335
10.1 概述 336
10.2 初识泛型算法 338
10.2.1 只读算法 338
10.2.2 写容器元素的算法 339
10.2.3 重排容器元素的算法 342
10.3 定制操作 344
10.3.1 向算法传递函数 344
10.3.2 lambda表达式 345
10.3.3 lambda捕获和返回 349
10.3.4 参数绑定 354
10.4 再探迭代器 357
10.4.1 插入迭代器 358
10.4.2 iostream迭代器 359
10.4.3 反向迭代器 363
10.5 泛型算法结构 365
10.5.1 5类迭代器 365
10.5.2 算法形参模式 367
10.5.3 算法命名规范 368
10.6 特定容器算法 369
小结 371
术语表 371
第11章 关联容器 373
11.1 使用关联容器 374
11.2 关联容器概述 376
11.2.1 定义关联容器 376
11.2.2 关键字类型的要求 378
11.2.3 pair类型 379
11.3 关联容器操作 381
11.3.1 关联容器迭代器 382
11.3.2 添加元素 383
11.3.3 删除元素 386
11.3.4 map的下标操作 387
11.3.5 访问元素 388
11.3.6 一个单词转换的map 391
11.4 无序容器 394
小结 397
术语表 397
第12章 动态内存 399
12.1 动态内存与智能指针 400
12.1.1 shared_ptr类 400
12.1.2 直接管理内存 407
12.1.3 shared_ptr和new结合使用 412
12.1.4 智能指针和异常 415
12.1.5 unique_ptr 417
12.1.6 weak_ptr 420
12.2 动态数组 423
12.2.1 new和数组 423
12.2.2 allocator类 427
12.3 使用标准库:文本查询程序 430
12.3.1 文本查询程序设计 430
12.3.2 文本查询程序类的定义 432
小结 436
术语表 436
第Ⅲ部分 类设计者的工具 437
第13章 拷贝控制 439
13.1 拷贝、赋值与销毁 440
13.1.1 拷贝构造函数 440
13.1.2 拷贝赋值运算符 443
13.1.3 析构函数 444
13.1.4 三/五法则 447
13.1.5 使用=default 449
13.1.6 阻止拷贝 449
13.2 拷贝控制和资源管理 452
13.2.1 行为像值的类 453
13.2.2 定义行为像指针的类 455
13.3 交换操作 457
13.4 拷贝控制示例 460
13.5 动态内存管理类 464
13.6 对象移动 470
13.6.1 右值引用 471
13.6.2 移动构造函数和移动赋值运算符 473
13.6.3 右值引用和成员函数 481
小结 486
术语表 486
第14章 重载运算与类型转换 489
14.1 基本概念 490
14.2 输入和输出运算符 494
14.2.1 重载输出运算符<< 494
14.2.2 重载输入运算符>> 495
14.3 算术和关系运算符 497
14.3.1 相等运算符 497
14.3.2 关系运算符 498
14.4 赋值运算符 499
14.5 下标运算符 501
14.6 递增和递减运算符 502
14.7 成员访问运算符 504
14.8 函数调用运算符 506
14.8.1 lambda是函数对象 507
14.8.2 标准库定义的函数对象 509
14.8.3 可调用对象与function 511
14.9 重载、类型转换与运算符 514
14.9.1 类型转换运算符 514
14.9.2 避免有二义性的类型转换 517
14.9.3 函数匹配与重载运算符 521
小结 523
术语表 523
第15章 面向对象程序设计 525
15.1 OOP:概述 526
15.2 定义基类和派生类 527
15.2.1 定义基类 528
15.2.2 定义派生类 529
15.2.3 类型转换与继承 534
15.3 虚函数 536
15.4 抽象基类 540
15.5 访问控制与继承 542
15.6 继承中的类作用域 547
15.7 构造函数与拷贝控制 551
15.7.1 虚析构函数 552
15.7.2 合成拷贝控制与继承 552
15.7.3 派生类的拷贝控制成员 554
15.7.4 继承的构造函数 557
15.8 容器与继承 558
15.8.1 编写Basket类 559
15.9 文本查询程序再探 562
15.9.1 面向对象的解决方案 563
15.9.2 Query_base类和Query类 567
15.9.3 派生类 568
15.9.4 eval函数 571
小结 575
术语表 575
第16章 模板与泛型编程 577
16.1 定义模板 578
16.1.1 函数模板 578
16.1.2 类模板 583
16.1.3 模板参数 592
16.1.4 成员模板 595
16.1.5 控制实例化 597
16.1.6 效率与灵活性 599
16.2 模板实参推断 600
16.2.1 类型转换与模板类型参数 601
16.2.2 函数模板显式实参 603
16.2.3 尾置返回类型与类型转换 604
16.2.4 函数指针和实参推断 607
16.2.5 模板实参推断和引用 608
16.2.6 理解std::move 610
16.2.7 转发 612
16.3 重载与模板 614
16.4 可变参数模板 618
16.4.1 编写可变参数函数模板 620
16.4.2 包扩展 621
16.4.3 转发参数包 622
16.5 模板特例化 624
小结 630
术语表 630
第Ⅳ部分 高级主题 633
第17章 标准库特殊设施 635
17.1 tuple类型 636
17.1.1 定义和初始化tuple 637
17.1.2 使用tuple返回多个值 638
17.2 bitset类型 640
17.2.1 定义和初始化bitset 641
17.2.2 bitset操作 643
17.3 正则表达式 645
17.3.1 使用正则表达式库 646
17.3.2 匹配与Regex迭代器类型 650
17.3.3 使用子表达式 653
17.3.4 使用regex_replace 657
17.4 随机数 659
17.4.1 随机数引擎和分布 660
17.4.2 其他随机数分布 663
17.5 IO库再探 666
17.5.1 格式化输入与输出 666
17.5.2 未格式化的输入/输出操作 673
17.5.3 流随机访问 676
小结 680
术语表 680
第18章 用于大型程序的工具 683
18.1 异常处理 684
18.1.1 抛出异常 684
18.1.2 捕获异常 687
18.1.3 函数try语句块与构造函数 689
18.1.4 noexcept异常说明 690
18.1.5 异常类层次 693
18.2 命名空间 695
18.2.1 命名空间定义 695
18.2.2 使用命名空间成员 701
18.2.3 类、命名空间与作用域 705
18.2.4 重载与命名空间 708
18.3 多重继承与虚继承 710
18.3.1 多重继承 711
18.3.2 类型转换与多个基类 713
18.3.3 多重继承下的类作用域 715
18.3.4 虚继承 717
18.3.5 构造函数与虚继承 720
小结 722
术语表 722
第19章 特殊工具与技术 725
19.1 控制内存分配 726
19.1.1 重载new和delete 726
19.1.2 定位new表达式 729
19.2 运行时类型识别 730
19.2.1 dynamic_cast运算符 730
19.2.2 typeid运算符 732
19.2.3 使用RTTI 733
19.2.4 type_info类 735
19.3 枚举类型 736
19.4 类成员指针 739
19.4.1 数据成员指针 740
19.4.2 成员函数指针 741
19.4.3 将成员函数用作可调用对象 744
19.5 嵌套类 746
19.6 union:一种节省空间的类 749
19.7 局部类 754
19.8 固有的不可移植的特性 755
19.8.1 位域 756
19.8.2 volatile限定符 757
19.8.3 链接指示:extern "C" 758
小结 762
术语表 762
附录A 标准库 765
A.1 标准库名字和头文件 766
A.2 算法概览 770
A.2.1 查找对象的算法 771
A.2.2 其他只读算法 772
A.2.3 二分搜索算法 772
A.2.4 写容器元素的算法 773
A.2.5 划分与排序算法 775
A.2.6 通用重排操作 776
A.2.7 排列算法 778
A.2.8 有序序列的集合算法 778
A.2.9 最小值和优选值 779
A.2.10 数值算法 780
A.3 随机数 781
A.3.1 随机数分布 781
A.3.2 随机数引擎 783
索引 785
C++11的新特性
¬¬
2.1.1 long long类型 31
2.2.1 列表初始化 39
2.3.2 nullptr常量 48
2.4.4 constexpr变量 59
2.5.1 类型别名声明 60
2.5.2 auto类型指示符 61
2.5.3 decltype类型指示符 62
2.6.1 类内初始化 65
3.2.2 使用auto或decltype缩写类型 79
3.2.3 范围for语句 82
3.3 定义vector对象的vector(向量的向量) 87
3.3.1 vector对象的列表初始化 88
3.4.1 容器的cbegin和cend函数 98
3.5.3 标准库begin和end函数 106
3.6 使用auto和decltype简化声明 115
4.2 除法的舍入规则 125
4.4 用大括号包围的值列表赋值 129
4.9 将sizeof用于类成员 139
5.4.3 范围for语句 168
6.2.6 标准库initializer_list类 197
6.3.2 列表初始化返回值 203
6.3.3 定义尾置返回类型 206
6.3.3 使用decltype简化返回类型定义 206
6.5.2 constexpr函数 214
7.1.4 使用=default生成默认构造函数 237
7.3.1 类对象成员的类内初始化 246
7.5.2 委托构造函数 261
7.5.6 constexpr构造函数 268
8.2.1 用string对象处理文件名 284
9.1 array和forward_list容器 293
9.2.3 容器的cbegin和cend函数 298
9.2.4 容器的列表初始化 300
9.2.5 容器的非成员函数swap 303
9.3.1 容器insert成员的返回类型 308
9.3.1 容器的emplace成员 308
9.4 shrink_to_fit 318
9.5.5 string的数值转换函数 327
10.3.2 lambda表达式 346
10.3.3 lambda表达式中的尾置返回类型 353
10.3.4 标准库bind函数 354
11.2.1 关联容器的列表初始化 377
11.2.3 列表初始化pair的返回类型 380
11.3.2 pair的列表初始化 384
11.4 无序容器 394
12.1 智能指针 400
12.1.1 shared_ptr类 400
12.1.2 动态分配对象的列表初始化 407
12.1.2 auto和动态分配 408
12.1.5 unique_ptr类 417
12.1.6 weak_ptr类 420
12.2.1 范围for语句不能应用于动态分配数组 424
12.2.1 动态分配数组的列表初始化 424
12.2.1 auto不能用于分配数组 424
12.2.2 allocator::construct可使用任意构造函数 428
13.1.5 将=default用于拷贝控制成员 449
13.1.6 使用=default阻止拷贝类对象 449
13.5 用移动类对象代替拷贝类对象 469
13.6.1 右值引用 471
13.6.1 标准库move函数 472
13.6.2 移动构造函数和移动赋值 473
13.6.2 移动构造函数通常应该是noexcept 473
13.6.2 移动迭代器 480
13.6.3 引用限定成员函数 483
14.8.3 function类模板 512
14.9.1 explicit类型转换运算符 516
15.2.2 虚函数的override指示符 530
15.2.2 通过定义类为final来阻止继承 533
15.3 虚函数的override和final指示符 538
15.7.2 删除的拷贝控制和继承 553
15.7.4 继承的构造函数 557
16.1.2 声明模板类型形参为友元 590
16.1.2 模板类型别名 590
16.1.3 模板函数的默认模板参数 594
16.1.5 实例化的显式控制 597
16.2.3 模板函数与尾置返回类型 605
16.2.5 引用折叠规则 609
16.2.6 用static_cast将左值转换为右值 612
16.2.7 标准库forward函数 614
16.4 可变参数模板 618
16.4 sizeof...运算符 619
16.4.3 可变参数模板与转发 622
17.1 标准库tuple类模板 636
17.2.2 新的bitset运算 643
17.3 正则表达式库 645
17.4 随机数库 659
17.5.1 浮点数格式控制 670
18.1.4 noexcept异常指示符 690
18.1.4 noexcept运算符 691
18.2.1 内联命名空间 699
18.3.1 继承的构造函数与多重继承 712
19.3 有作用域的enum 736
19.3 说明类型用于保存enum对象 738
19.3 enum的前置声明 738
19.4.3 标准库mem_fn类模板 746
19.6 类类型的union成员 751
作者介绍:
Stanley B. Lippman目前是微软公司 Visual C++团队的架构师。他从1984年开始在贝尔实验室与C++的设计者BjarneStroustrup一起从事C++的设计与开发。他在迪士尼和梦工厂从事动画制作,还担任过JPL的高级顾问。
Josée Lajoie曾经是IBM加拿大研究中心C/C++编译器开发团队的成员,在ISOC++标准委员会工作了7年,担任过ISO核心语言工作组的主席和C++ Report杂志的专栏作家。
Barbara E.Moo是拥有25年软件经验的独立咨询顾问。在AT&T,她与Stroustrup、Lippman一起管理过复杂的C++开发项目。
出版社信息:
暂无出版社相关信息,正在全力查找中!
书籍摘录:
7.4.1 名字查找与类的作用域
在目前为止,我们编写的程序中,名字查找( name lookup)(寻找与所用名字最匹配的声明的过程)的过程比较直截了当: 首先,在名字所在的块中寻找其声明语句,只考虑在名字的使用之前出现的声明。
如果没找到,继续查找外层作用域。
如果最终没有找到匹配的声明,则程序报错。
对于定义在类内部的成员函数来说,解析其中名字的方式与上述的查找规则有所区别,不过在当前的这个例子中体现得不太明显。类的定义分两步处理:
首先,编译成员的声明。
直到类全部可见后才编译函数体。
按照这种两阶段的方式处理类可以简化类代码的组织方式。因为成员函数体直到整个类可见后才会被处理,所以它能使用类中定义的任何名字。相反,如果函数的定义和成员的声明被同时处理,那么我们将不得不在成员函数中只使用那些已经出现的名字。
用于类成员声明的名字查找 这种两阶段的处理方式只适用于成员函数中使用的名字。声明中使用的名字,包括返回类型或者参数列表中使用的名字,都必须在使用前确保可见。如果某个成员的声明使用了类中尚未出现的名字,则编译器将会在定义该类的作用域中继续查找。
……
在线阅读/听书/购买/PDF下载地址:
原文赏析:
If we have not previously told the compiler that the friend is a template, then the compiler will infer that the friend is an ordinary nontemplate class or function.
如果没有事先告诉编译器该友元是一个模板,则编译器将认为该友元是一个普通非模板类或非模板函数。
A friend declaration introduces the named class or nonmember function into the surrounding scope. Moreover, a friend function may be defined inside the class. The scope of the function is exported to the scope enclosing the class definition.
友元声明将已命名的类或非成员函数引入到外围作用域中。此外,友元函数可以在类的内部定义,该函数的作用域扩展到包围该类定义的作用域。
to make a member function a friend, the class containing that member must have been defined.
必须先定义包含成员函数的类,才能将成员函数设为友元。
When we want to restrict friendship to a specific instantiation, then the class or function must have been declared before it can be used in a friend declaration
想要限制对特定实例化的友元关系时,必须在可以用于友元声明之前声明类或函数
可以将严格弱序看作"小于等于"
•两个关键字不能同时"小于等于"对方;如果k1"小于等于"k2, 那么 k2 决不能"小于等于" k1 .
We can think of a strict weak ordering as “less than”
• Two keys cannot both be “less than” each other; if k1 is “less than” k2, then k2 must never be “less than” k1.
Unlike using declarations for ordinary members, a constructor using declaration does not change access level of the inherited constructor(s).
More over, a using declaration can't specify explicit or constexpr, the inherited constructor has the same property as the corresponding base constructor.
其它内容:
编辑推荐
C++领域权威 潘爱民|孟岩作序,代表技术圈鼎力推荐
一线C++工程师腾讯Milo、微软刘未鹏|陈梓瀚、阿里李云|侯凤林高水准技术审校
如果只读一本C++书籍,相信所有读过的人都会毫不犹豫选择本书,无论初学或老手
既可用来理解C++11规则背后的原理,也可用其新语言特性与标准库来快速构建健壮程序
采用中文版页码全面呈现原书大量交叉引用及详尽索引,新式辅学设置与课后操练用于避开陷阱、巩固良法
媒体评论
这本CP5接近可以当做参考书或者字典来用,在语法上遇到什么问题或者编译有问题都可以再这本书里找答案,CP4是非常权威的,毕竟Lippman大大是第一个C++编译器的实现者之一。
这本书的写作方式实在适合国人。他没有中国作家普遍的“讲概念”式的写作手法,而是从因到果,由浅入深,由表及里娓娓道来,从语言的简单用法,到为什么这样设计语言,你不仅能从一个语言使用者的角度看问题,更能站在一个语言设计者的角度思考这种语言的设计优劣。
这是本非常经典的C++书籍,系统全面地介绍了C++语言。本书近一千页,可以看成是学习C++的百科全书。市面上没有哪本其他书籍比本书论述得更广泛,几乎所有的C++知识点本书都有论述而且写得还不错。因为这点,这本书值得每一位C++程序员拥有。
针对C++11而新添加到书中的内容恰到好处地定义了这个新版本。作者在新版本中给出了清晰的阐述,如自动类型、decltype、列表初始化器、右值引用、move操作符、lambda表达式、智能指针等。仅针对C++11的延展,正是这本书的价值所在。
C++是一门强大、难学、令人痛苦,但又是如此美妙的编程语言,在工业界和学术界都可以使用,《C++Primer(第5版)》即针对初学者,也同样适用于有一定编程经验的读者,近期新版本配备了C++11近期新标准,是C++粉丝们书架上推荐的一本经典著作。
前言
推荐序
C++11标准公布之后,C++社群出现了久违的热情,有人甚至叫出“C++的复兴”。指望C++回到20世纪90年代中期那样的地位显然是昧于大势的奢望,但是C++经历了这么多年的打磨与起伏,其在工业界的地位已经非常稳固,在很多领域里已经是不可取代也没必要被取代的统治者。新标准的出现能够大大提升C++开发的效率和质量,因此赢得欢呼也是情理之中。在这种氛围之下,编译器实现的速度也令人惊喜。短短两年时间,从开源的GCC、LLVM到专有的 Visual C++和Intel C++,对于新标准的追踪之快,覆盖之全,与当年C++ 98标准颁布之后迟迟不能落地的窘境相比,可谓对比强烈。当年是热情的开发者反复敦促厂商实现完整标准而不得,为此沮丧无奈,那种心情,至今记忆犹新。时过境迁,今天是编译器实现远远冲在前面,开发者倒是大大地落在了后面。
时至今日,能够基本了解C++11标准的程序员恐怕不多,而能够以新的C++风格开发实践的人更是凤毛麟角。因此,今天的C++开发者面临的一个重要任务就是快速掌握新的C++风格和工具。而说到教授“正宗的”C++11编程风格,《C++ Primer(第5版)》如同它之前的版本一样,扮演着法定教科书的角色。一种优秀的编程语言,一定要对于计算这件事情实现一个完整和自洽的抽象。十几年来编程语言领域的竞争,除却实现质量之外,基本上是在比拼抽象的设计。而C语言之所以四十年长盛不衰,根本在于它对于现代计算机提供了一个最底层的高级抽象:凡是比它低的抽象都过于简陋,凡是比它高的抽象都可以用C语言构造出来。C++成功的根本原因,恰恰是因为它虽然试图提供一些高级的抽象机制,但是其根基与C在同一层面。正因为如此,每当你需要走下去直接与硬件对话时,C++成为C之外专享有效率的选择。我的一个朋友在进行了多年的大型系统软件开发之后,不无感慨地说,C++优选的力量不在于其抽象,恰恰在于其不抽象。话虽然如此,但是C++之所以脱离C而存在,毕竟还是因为其强大的抽象能力。Bjarne Stroustrup曾经总结说,C++同时支持4种不同的编程风格:C风格、基于对象、面向对象和泛型。事实上,把微软的COM也算进来的话,还可以加上一种“基于组件”的风格。这么多的风格共存于一种语言,就是其强大抽象机制的证明。但是,在C++11以前,C++的抽象可以说存在若干缺陷,其中最严重的是缺少自动内存管理和对象级别的消息发送机制。今天看来,C++ 98只能说是特定历史条件造成的半成品,无论是从语言机制,还是标准库完备程度来说,可以说都存在明显的、不容忽略的缺陷。其直接后果,就是优雅性的缺失和效率的降低。
我本人在十年前曾经与当时中国C++社群中不少杰出的人物交流探讨,试图从C++ 98中剪裁出一个小巧、优雅的、自成一体的子集,希望至少在日常编程中,能够在这个子集之内可以写出与当时的Java和C#同样干净明晰的代码。为此我们尝试了各种古怪的模板技巧,并且到处寻找有启发的代码和经验来构造这个语言子集,结果并不理想,甚至可以说是令人非常失望。后来我在我的博客中发表过好几篇文章,探讨所谓的C++风格问题,其实就是说,C++不支持简洁明快的面向对象风格,大家还不如回到基于对象甚至C语言的风格,最多加点模板,省一点代码量。非要面向对象的话,就必须依赖像Qt或者MFC那样的基础设施才可以。C++11出来之后,增强的语言机制和大为完善的标准库,为C++语言的编程风格带来了革命性的变化。如果能够纯熟地运用C++11的新特征、新机制,那 么就能够形成一种简洁优雅的C++编程风格,以比从前更高的效率、更好的质量进行软件开发。对于这种新的风格,我认为“直觉、自然”是很好的描述。也就是说,解决任何问题不必拘泥于什么笼盖一切的编程思想,也不再沉溺于各种古怪的模板技巧中无法自拔,而是能够根据那个问题本身采用最自然、最符合直觉的方 式。C++有自己的一套思维方式,比如容器、算法、作为概念抽象的对象等,很大程度上这套思维方式确实是合乎直觉的。只有到了C++11这一代,C++语 言的高级抽象才基本完备,这样一种风格才可能真正落实。因此可以说C++11对于C++ 98而言,不是一次简单的升级,而是一次本质的跃升。学习新的C++风格,并不是轻而易举的事情。即便对于以前已经精通C++的人来说,熟练掌握rvalue reference、move语义,了解unique_ptr、shared_ptr和weak_ptr的完整用法,明智地使用 function/bind和lambda机制,学习C++ Concurrency的新技术,都绝非一朝一夕之功。对于那些初学者来说,这件事情更不简单。
本书无论对于初学者还是提高者,都是最经典的教科全书。一直以来,它的特点就是完整而详细,基本上关于语言本身的问题,都可以在这本书里得到解决。而本书的另一个重要优点,就是其接近基于新的编程风格编写,所有的例子和讲解都遵循C++11标准所体现出来的思路和风格进行,如果能够踏下心来认真学习和练习,那么就能“一次到位”地掌握C++11,尽管可能会比较慢。有经验的C++开发者阅读这本书当然不用从头到尾,选择自己关心的内容学习C++11的新 特性就可以,是快速升级自身能力的捷径。差不多十年前,我提出一个观点,每一个具体的技术领域,只需要读四五本书就够了。以前的C++是个例外,因为语言设计有缺陷,所以要读很多书才知道如何绕过缺陷。现在的C++11接近可以了,大家读四五本书就可以达到合格的水平,这恰恰是语言进步的体现。本书是这四五本中的一本,而且是“教程+参考书”,扛梁之作,初学者的不二法门。另一本是《C++标准程序库(第2版)》,对于C++熟手来说更为快捷。 Scott Meyers的Effective C++永远是学习C++者推荐阅读的,只不过这本书的第4版不知道什么时候出来。Anthony Williams的C++ Concurrency in Action是学习用标准C++开发并发程序的很好选择。国内的作品,我则高度推荐陈硕的《Linux多线程服务端编程》。这本书的名字赶跑了不少潜在的 读者,所以我要特别说明一下。这本书是C++开发的高水平作品,与其说是教你怎么用C++写服务端开发,不如说是教你如何以服务端开发为例子提升C++开 发水平。前面几本书都是谈标准C++自己的事情,碰到像iostream这样失败的标准组件也不得不硬着头皮介绍。而这本书是接地气的实践结晶,告诉你面对具体问题时应怎样权衡,C++里什么好用,什么不好用,为什么,等等。今天的C++学习者是非常幸运的,可以在C++11这个基础上大步向前,不必再因为那些语言的缺陷和过度的技巧而烦恼。大家静下心来认真读这本书,可以打下很好的基础。
孟岩 2013年8月 北京
书籍介绍
这本久负盛名的 C++ 经典教程,时隔八年之久,终迎来史无前例的重大升级。除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委员会原负责人 Josée Lajoie 对C++标准的深入理解,以及C+ + 先驱 Barbara E. Moo 在 C++教学方面的真知灼见外,更是基于全新的 C++11标准进行了全面而彻底的内容更新。非常难能可贵的是,本书所有示例均全部采用 C++11 标准改写,这在经典升级版中极其罕见——充分体现了 C++ 语言的重大进展及其全面实践。书中丰富的教学辅助内容、醒目的知识点提示,以及精心组织的编程示范,让这本书在 C++ 领域的权威地位更加不可动摇。无论是初学者入门,或是中、高级程序员提升,本书均为不容置疑的首选。
网站评分
书籍多样性:8分
书籍信息完全性:8分
网站更新速度:7分
使用便利性:4分
书籍清晰度:6分
书籍格式兼容性:5分
是否包含广告:9分
加载速度:3分
安全性:6分
稳定性:6分
搜索功能:6分
下载便捷性:6分
下载点评
- 无颠倒(340+)
- 盗版少(358+)
- 格式多(540+)
- 内容齐全(679+)
- azw3(192+)
- 书籍多(523+)
下载评价
- 网友 芮***枫: ( 2025-01-04 09:19:50 )
有点意思的网站,赞一个真心好好好 哈哈
- 网友 冯***丽: ( 2024-12-26 00:03:12 )
卡的不行啊
- 网友 冷***洁: ( 2024-12-25 17:34:32 )
不错,用着很方便
- 网友 通***蕊: ( 2025-01-10 17:43:49 )
五颗星、五颗星,大赞还觉得不错!~~
- 网友 薛***玉: ( 2025-01-09 08:51:52 )
就是我想要的!!!
- 网友 濮***彤: ( 2025-01-20 16:38:39 )
好棒啊!图书很全
- 网友 石***致: ( 2024-12-26 10:03:39 )
挺实用的,给个赞!希望越来越好,一直支持。
- 网友 扈***洁: ( 2024-12-30 04:43:35 )
还不错啊,挺好
- 网友 石***烟: ( 2025-01-12 04:00:18 )
还可以吧,毕竟也是要成本的,付费应该的,更何况下载速度还挺快的
- 网友 仰***兰: ( 2025-01-14 13:39:31 )
喜欢!很棒!!超级推荐!
喜欢"C++ Primer中文版 第5版 C++编程从入门到精通C++11标准 C++经典教程语言程序设计软件计算机开发书籍c primer plus"的人也看了
- 刺局2:字画中的诡异杀技 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 数字化转型与创新管理-VeriSM导论 VeriSM 数字化时代的服务管理 清华大学出版社 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- Professional Microsoft Robotics Developer Studio (Wrox Programmer to Programmer) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 星条旗与十字架 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 五年制高职会计专业--会计基本技能实训 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 全新图书 电介质材料曹茂盛北京理工大学出版社9787576315318大国映画书店 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 【中商原版】全知读者视角09 港台原版 sing N song 深空出版 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 粉末衍射法测定晶体结构(套装上下册) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 航空电子对抗设备检测技术 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
- 业务流程再造(第五版) 下载 pdf 百度网盘 epub 免费 2025 电子书 mobi 在线
书籍真实打分
故事情节:5分
人物塑造:5分
主题深度:7分
文字风格:3分
语言运用:7分
文笔流畅:9分
思想传递:7分
知识深度:6分
知识广度:4分
实用性:5分
章节划分:3分
结构布局:5分
新颖与独特:4分
情感共鸣:6分
引人入胜:9分
现实相关:4分
沉浸感:7分
事实准确性:8分
文化贡献:8分