《C++程序设计语言 特别版》PDF下载

  • 购买积分:24 如何计算积分?
  • 作  者:(美)BJARNESTROUSTRUP著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2010
  • ISBN:9787111298854
  • 页数:906 页
图书介绍:本书介绍C++这一程序设计语言。

导论 3

第1章 致读者 3

1.1本书的结构 3

1.1.1例子和参考 4

1.1.2练习 5

1.1.3有关实现的注记 5

1.2学习C++ 6

1.3 C++的设计 7

1.3.1效率和结构 8

1.3.2哲学注记 9

1.4历史注记 9

1.5 C++的使用 11

1.6 C和C++ 12

1.6.1给C程序员的建议 13

1.6.2给C++程序员的建议 13

1.7有关在C++里编程的思考 14

1.8忠告 15

1.9参考文献 16

第2章 C++概览 19

2.1为什么是C++ 19

2.2程序设计范型 19

2.3过程式程序设计 20

2.3.1变量和算术 21

2.3.2检测和循环 22

2.3.3指针和数组 23

2.4模块程序设计 23

2.4.1分别编译 24

2.4.2异常处理 25

2.5数据抽象 26

2.5.1定义类型的模块 27

2.5.2用户定义类型 28

2.5.3具体类型 29

2.5.4抽象类型 31

2.5.5虚函数 33

2.6面向对象的程序设计 33

2.6.1具体类型的问题 33

2.6.2类层次结构 34

2.7通用型程序设计 36

2.7.1容器 36

2.7.2通用型算法 37

2.8附言 38

2.9忠告 39

第3章 标准库概览 40

3.1引言 40

3.2 Hello, world! 40

3.3标准库名字空间 41

3.4输出 41

3.5字符串 42

3.5.1 C风格的字符串 44

3.6输入 44

3.7容器 46

3.7.1向量——vector 46

3.7.2范围检查 47

3.7.3表——list 48

3.7.4映射——map 49

3.7.5标准容器 49

3.8算法 50

3.8.1迭代器的使用 51

3.8.2迭代器类型 52

3.8.3迭代器和I/O 53

3.8.4遍历和谓词 54

3.8.5使用成员函数的算法 56

3.8.6标准库算法 56

3.9数学 57

3.9.1复数 57

3.9.2向量算术 57

3.9.3基本数值支持 58

3.10标准库功能 58

3.11忠告 58

第一部分 基本功能 63

第4章 类型和声明 63

4.1类型 63

4.1.1基本类型 64

4.2布尔量 64

4.3字符类型 65

4.3.1字符文字量 66

4.4整数类型 66

4.4.1整数文字量 66

4.5浮点类型 67

4.5.1浮点文字量 67

4.6大小 68

4.7void 69

4.8枚举 69

4.9声明 71

4.9.1声明的结构 72

4.9.2声明多个名字 73

4.9.3名字 73

4.9.4作用域 74

4.9.5初始化 75

4.9.6对象和左值 76

4.9.7 typedef 76

4.10忠告 77

4.11练习 77

第5章 指针、数组和结构 79

5.1指针 79

5.1.1零 80

5.2数组 80

5.2.1数组初始化 80

5.2.2字符串文字量 81

5.3到数组的指针 83

5.3.1在数组里漫游 83

5.4常量 85

5.4.1指针和常量 87

5.5引用 88

5.6指向void的指针 90

5.7结构 91

5.7.1类型等价 94

5.8忠告 94

5.9练习 94

第6章 表达式和语句 96

6.1一个桌面计算器 96

6.1.1分析器 96

6.1.2输入函数 100

6.1.3低级输入 102

6.1.4错误处理 103

6.1.5驱动程序 104

6.1.6头文件 104

6.1.7命令行参数 105

6.1.8有关风格的注记 106

6.2运算符概览 107

6.2.1结果 109

6.2.2求值顺序 110

6.2.3运算符优先级 110

6.2.4按位逻辑运算符 111

6.2.5增量和减量 112

6.2.6自由存储 113

6.2.7显式类型转换 116

6.2.8构造函数 117

6.3语句概览 118

6.3.1声明作为语句 119

6.3.2选择语句 119

6.3.3迭代语句 122

6.3.4 goto 123

6.4注释和缩进编排 123

6.5忠告 125

6.6练习 125

第7章 函数 128

7.1函数声明 128

7.1.1函数定义 128

7.1.2静态变量 129

7.2参数传递 130

7.2.1数组参数 131

7.3返回值 132

7.4重载函数名 133

7.4.1重载和返回类型 135

7.4.2重载与作用域 135

7.4.3手工的歧义性解析 135

7.4.4多参数的解析 136

7.5默认参数 137

7.6未确定数目的参数 138

7.7指向函数的指针 139

7.8宏 143

7.8.1条件编译 145

7.9忠告 145

7.10练习 146

第8章 名字空间和异常 148

8.1模块化和界面 148

8.2名字空间 150

8.2.1带限定词的名字 151

8.2.2使用声明 152

8.2.3使用指令 153

8.2.4多重界面 154

8.2.5避免名字冲突 157

8.2.6名字查找 159

8.2.7名字空间别名 159

8.2.8名字空间组合 160

8.2.9名字空问和老代码 163

8.3异常 166

8.3.1抛出和捕捉 167

8.3.2异常的辨识 168

8.3.3在计算器中的异常 169

8.4忠告 173

8.5练习 173

第9章 源文件和程序 175

9.1分别编译 175

9.2连接 176

9.2.1头文件 178

9.2.2标准库头文件 179

9.2.3单一定义规则 180

9.2.4与非C++代码的连接 182

9.2.5连接与指向函数的指针 184

9.3使用头文件 184

9.3.1单一头文件 184

9.3.2多个头文件 187

9.3.3包含保护符 191

9.4程序 192

9.4.1非局部变量的初始化 192

9.5忠告 194

9.6练习 194

第二部分 抽象机制 199

第10章 类 199

10.1引言 199

10.2类 199

10.2.1成员函数 200

10.2.2访问控制 201

10.2.3构造函数 202

10.2.4静态成员 203

10.2.5类对象的复制 204

10.2.6常量成员函数 205

10.2.7自引用 205

10.2.8结构和类 208

10.2.9在类内部的函数定义 210

10.3高效的用户定义类型 210

10.3.1成员函数 212

10.3.2协助函数 214

10.3.3重载的运算符 215

10.3.4具体类型的意义 215

10.4对象 216

10.4.1析构函数 216

10.4.2默认构造函数 217

10.4.3构造和析构 218

10.4.4局部变量 218

10.4.5自由存储 220

10.4.6类对象作为成员 221

10.4.7数组 223

10.4.8局部静态存储 224

10.4.9非局部存储 225

10.4.10临时对象 226

10.4.11对象的放置 228

10.4.12联合 229

10.5忠告 230

10.6练习 230

第11章 运算符重载 233

11.1引言 233

11.2运算符函数 234

11.2.1二元和一元运算符 235

11.2.2运算符的预定义意义 236

11.2.3运算符和用户定义类型 236

11.2.4名字空问里的运算符 237

11.3一个复数类型 238

11.3.1成员运算符和非成员运算符 238

11.3.2混合模式算术 239

11.3.3初始化 240

11.3.4复制 241

11.3.5构造函数和转换 242

11.3.6文字量 243

11.3.7另一些成员函数 243

11.3.8协助函数 244

11.4转换运算符 245

11.4.1歧义性 246

11.5友元 248

11.5.1友元的寻找 249

11.5.2友元和成员 250

11.6大型对象 251

11.7基本运算符 253

11.7.1显式构造函数 253

11.8下标 255

11.9函数调用 256

11.10间接 257

11.11增量和减量 259

11.12一个字符串类 260

11.13忠告 265

11.14练习 265

第12章 派生类 268

12.1引言 268

12.2派生类 269

12.2.1成员函数 271

12.2.2构造函数和析构函数 272

12.2.3复制 273

12.2.4类层次结构 273

12.2.5类型域 274

12.2.6虚函数 276

12.3抽象类 278

12.4类层次结构的设计 280

12.4.1一个传统的层次结构 280

12.4.2抽象类 283

12.4.3其他实现方式 285

12.4.4对象创建的局部化 287

12.5类层次结构和抽象类 289

12.6忠告 289

12.7练习 289

第13章 模板 292

13.1引言 292

13.2一个简单的String模板 293

13.2.1定义一个模板 294

13.2.2模板实例化 295

13.2.3模板参数 296

13.2.4类型等价 296

13.2.5类型检查 297

13.3函数模板 298

13.3.1函数模板的参数 299

13.3.2函数模板的重载 300

13.4用模板参数描述策略 302

13.4.1默认模板参数 303

13.5专门化 304

13.5.1专门化的顺序 306

13.5.2模板函数的专门化 307

13.6派生和模板 308

13.6.1参数化和继承 309

13.6.2成员模板 310

13.6.3继承关系 311

13.7源代码组织 312

13.8忠告 314

13.9练习 314

第14章 异常处理 316

14.1错误处理 316

14.1.1关于异常的其他观点 318

14.2异常的结组 318

14.2.1派生的异常 319

14.2.2多个异常的组合 321

14.3捕捉异常 321

14.3.1重新抛出 322

14.3.2捕捉所有异常 322

14.4资源管理 324

14.4.1构造函数和析构函数的使用 325

14.4.2 auto_ptr 326

14.4.3告诫 328

14.4.4异常和new 328

14.4.5资源耗尽 329

14.4.6构造函数里的异常 331

14.4.7析构函数里的异常 332

14.5不是错误的异常 333

14.6异常的描述 334

14.6.1对异常描述的检查 335

14.6.2未预期的异常 336

14.6.3异常的映射 336

14.7未捕捉的异常 338

14.8异常和效率 339

14.9处理错误的其他方式 340

14.10标准异常 342

14.11忠告 344

14.12练习 344

第15章 类层次结构 346

15.1引言和概述 346

15.2多重继承 346

15.2.1歧义性解析 348

15.2.2继承和使用声明 349

15.2.3重复的基类 350

15.2.4虚基类 352

15.2.5使用多重继承 354

15.3访问控制 357

15.3.1保护成员 359

15.3.2对基类的访问 360

15.4运行时类型信息 361

15.4.1 dynamic_cast 363

15.4.2在类层次结构中漫游 365

15.4.3类对象的构造与析构 367

15.4.4 typeid和扩展的类型信息 368

15.4.5 RTTI的使用和误用 370

15.5指向成员的指针 371

15.5.1基类和派生类 373

15.6自由存储 374

15.6.1数组分配 375

15.6.2虚构造函数 376

15.7忠告 377

15.8练习 377

第三部分 标准库 381

第16章 库组织和容器 381

16.1标准库的设计 381

16.1.1设计约束 382

16.1.2标准库组织 383

16.1.3语言支持 385

16.2容器设计 386

16.2.1专门化的容器和迭代器 386

16.2.2有基类的容器 388

16.2.3 STL容器 391

16.3向量 392

16.3.1类型 393

16.3.2迭代器 394

16.3.3元素访问 395

16.3.4构造函数 396

16.3.5堆栈操作 399

16.3.6表操作 401

16.3.7元素定位 403

16.3.8大小和容量 404

16.3.9其他成员函数 406

16.3.10协助函数 406

16.3.11 vector<bool> 407

16.4忠告 407

16.5练习 408

第17章 标准容器 409

17.1标准容器 409

17.1.1操作综述 409

17.1.2容器综述 412

17.1.3表示 413

17.1.4对元素的要求 413

17.2序列 416

17.2.1向量——vector 416

17.2.2表——list 416

17.2.3双端队列——deque 420

17.3序列适配器 421

17.3.1堆栈——stack 421

17.3.2队列——queue 422

17.3.3优先队列——priority_queue 423

17.4关联容器 425

17.4.1映射——map 425

17.4.2多重映射——multimap 433

17.4.3集合——set 434

17.4.4多重集合——multiset 435

17.5拟容器 435

17.5.1串——string 435

17.5.2值向量——valarray 435

17.5.3位集合——bitset 435

17.5.4内部数组 439

17.6定义新容器 439

17.6.1散列映射——hash_map 440

17.6.2表示和构造 441

17.6.3其他散列关联容器 446

17.7忠告 446

17.8练习 446

第18章 算法和函数对象 449

18.1引言 449

18.2标准库算法综述 449

18.3序列和容器 453

18.3.1输入序列 453

18.4函数对象 454

18.4.1函数对象的基类 456

18.4.2谓词 456

18.4.3算术函数对象 458

18.4.4约束器、适配器和否定器 458

18.5非修改性序列算法 463

18.5.1对每个做——for_each 463

18.5.2查找族函数 464

18.5.3计数 465

18.5.4相等和不匹配 466

18.5.5搜索 467

18.6修改性序列算法 467

18.6.1复制 468

18.6.2变换 469

18.6.3惟一化 471

18.6.4取代 473

18.6.5删除 474

18.6.6填充和生成 474

18.6.7反转和旋转 475

18.6.8交换 476

18.7排序的序列 476

18.7.1排序 476

18.7.2二分检索 477

18.7.3归并 478

18.7.4划分 479

18.7.5序列上的集合运算 479

18.8堆 480

18.9最小和最大 481

18.10排列 482

18.11 C风格算法 482

18.12忠告 483

18.13练习 483

第19章 迭代器和分配器 485

19.1引言 485

19.2迭代器和序列 485

19.2.1迭代器的操作 486

19.2.2迭代器特征类——iterator_lraits 487

19.2.3迭代器类别 488

19.2.4插入器 490

19.2.5反向迭代器 491

19.2.6流迭代器 492

19.3带检查迭代器 495

19.3.1异常、容器和算法 499

19.4分配器 500

19.4.1标准分配器 500

19.4.2一个用户定义分配器 503

19.4.3广义的分配器 505

19.4.4未初始化的存储 506

19.4.5动态存储 508

19.4.6 C风格的分配 509

19.5忠告 510

19.6练习 510

第20章 串 511

20.1引言 511

20.2字符 511

20.2.1字符特征类——char _traits 512

20.3基础串类——basic string 513

20.3.1类型 514

20.3.2迭代器 515

20.3.3元素访问 516

20.3.4构造函数 516

20.3.5错误 517

20.3.6赋值 518

20.3.7到C风格字符串的转换 519

20.3.8比较 521

20.3.9插入 522

20.3.10拼接 523

20.3.11查找 524

20.3.12替换 525

20.3.13子串 526

20.3.14大小和容量 527

20.3.15 I/O操作 527

20.3.16交换 528

20.4 C标准库 528

20.4.1 C风格字符串 528

20.4.2字符分类 530

20.5忠告 530

20.6练习 531

第21章 流 533

21.1引言 533

21.2输出 534

21.2.1输出流 535

21.2.2内部类型的输出 536

21.2.3用户定义类型的输出 538

21.3输入 540

21.3.1输入流 540

21.3.2内部类型的输入 540

21.3.3流状态 542

21.3.4字符的输入 544

21.3.5用户定义类型的输入 546

21.3.6异常 547

21.3.7流的联结 548

21.3.8哨位 549

21.4格式化 550

21.4.1格式状态 550

21.4.2整数输出 552

21.4.3浮点数输出 552

21.4.4输出域 553

21.4.5域的调整 555

21.4.6操控符 555

21.5文件流与字符串流 560

21.5.1文件流 561

21.5.2流的关闭 562

21.5.3字符串流 563

21.6缓冲 564

21.6.1输出流和缓冲区 565

21.6.2输入流和缓冲区 566

21.6.3流和缓冲区 567

21.6.4流缓冲区 567

21.7现场 571

21.7.1流回调 572

21.8 C输入/输出 573

21.9忠告 575

21.10练习 576

第22章 数值 578

22.1引言 578

22.2数值的限制 578

22.2.1表示限制的宏 580

22.3标准数学函数 580

22.4向量算术 582

22.4.1 valarray的构造 582

22.4.2 valarray的下标和赋值 583

22.4.3成员操作 584

22.4.4非成员函数 586

22.4.5切割 587

22.4.6切割数组——slice_ array 589

22.4.7临时量、复制和循环 593

22.4.8广义切割 595

22.4.9屏蔽 596

22.4.10间接数组——indirect array 596

22.5复数算术 597

22.6通用数值算法 599

22.6.1累积——accumulate 599

22.6.2内积——inner_product 600

22.6.3增量变化 600

22.7随机数 602

22.8忠告 603

22.9练习 603

第四部分 用C+做设计 607

第23章 开发和设计 607

23.1概述 607

23.2引言 607

23.3目的与手段 609

23.4开发过程 611

23.4.1开发循环 613

23.4.2设计目标 615

23.4.3设计步骤 616

23.4.4试验和分析 623

23.4.5测试 625

23.4.6软件维护 625

23.4.7效率 626

23.5管理 626

23.5.1重用 627

23.5.2规模 628

23.5.3个人 629

23.5.4混成设计 630

23.6带标注的参考文献 631

23.7忠告 633

第24章 设计和编程 635

24.1概述 635

24.2设计和程序设计语言 635

24.2.1忽视类 637

24.2.2忽视继承 638

24.2.3忽视静态类型检查 638

24.2.4忽视程序设计 641

24.2.5排他性地使用类层次结构 642

24.3类 643

24.3.1类表示什么 643

24.3.2类层次结构 644

24.3.3包容关系 648

24.3.4包容和继承 649

24.3.5使用关系 653

24.3.6编入程序里的关系 654

24.3.7类内的关系 656

24.4组件 661

24.4.1模板 663

24.4.2界面和实现 665

24.4.3肥大的界面 667

24.5忠告 668

第25章 类的作用 670

25.1类的种类 670

25.2具体类型 672

25.2.1具体类型的重用 672

25.3抽象类型 674

25.4结点 676

25.4.1修改界面 677

25.5动作 680

25.6界面类 681

25.6.1调整界面 683

25.7句柄类 684

25.7.1句柄上的操作 687

25.8应用框架 688

25.9忠告 689

25.10练习 690

附录和索引 695

附录A语法 695

附录B兼容性 713

附录C技术细节 724

附录D现场 759

附录E标准库的异常时安全性 815

索引 845