当前位置:首页 > 工业技术
C++ Primer中文版
C++ Primer中文版

C++ Primer中文版PDF电子书下载

工业技术

  • 电子书积分:26 积分如何计算积分?
  • 作 者:(美)Stanley B.Lippman,(美)Josee Lajoie著;潘爱民,张丽译
  • 出 版 社:北京:中国电力出版社
  • 出版年份:2002
  • ISBN:7508309898
  • 页数:1033 页
图书介绍:C++ Primer结合了Stanley Lippman的实践经验和Josée Lajoie对于ANSI/ISO标准C++的深入理解,此第三版被重新改写,以便更加精确地讲述标准C++的特性和用法。对于C++初学者特别有价值的是一些来自真实世界中的程序例子,它们说明了泛型程序(generic program)的设计、面向对象程序的设计、模板的用法,以及使用标准C++进行程序设计的方方面面,并且在适当的地方还讲到一些习惯用法以及效率指导。
《C++ Primer中文版》目录
标签:爱民 中文版

第一篇 C++概述 3

第1章 开始 3

1.1 问题的解决 3

1.2 C++程序 4

1.2.1 程序流程控制 8

1.3 预处理器指示符 10

1.4 注释 13

1.5 输入/输出初步 15

1.5.1 文件输入和输出 16

第2章 C++浏览 18

2.1 内置数组数据类型 18

2.2 动态内存分配和指针 21

2.3 基于对象的设计 23

2.4 面向对象的设计 32

2.5 泛型设计 40

2.6 基于异常的设计 46

2.7 用其他名字来命名数组 49

2.8 标准数组——向量 54

第二篇 基本语言 61

第3章 C++数据类型 61

3.1 文字常量 61

3.2 变量 64

3.2.1 什么是变量? 66

3.2.2 变量名 68

3.2.3 对象的定义 69

3.3 指针类型 71

3.4 字符串类型 76

3.4.1 C风格字符串 76

3.4.2 字符串类型 78

3.5 const限定修饰符 83

3.6 引用类型 86

3.7 布尔类型 90

3.8 枚举类型 91

3.9 数组类型 93

3.9.1 多维数组 96

3.9.2 数组与指针类型的关系 97

3.10 vector容器类型 99

3.11 复数类型 103

3.12 typedef名字 103

3.13 volatile限定修饰符 104

3.14 Pair类型 105

3.15 类类型 106

第4章 表达式 116

4.1 什么是表达式? 116

4.2 算术操作符 118

4.3 等于、关系和逻辑操作符 120

4.4 赋值操作符 123

4.5 递增和递减操作符 126

4.6 复数操作 128

4.7 条件操作符 131

4.8 sizeof操作符 132

4.9 new和delete表达式 134

4.10 逗号操作符 135

4.11 位操作符 136

4.12 bitset操作 139

4.13 优先级 142

4.14 类型转换 146

4.14.1 隐式类型转换 147

4.14.2 算术转换 148

4.14.3 显式转换 149

4.14.4 旧式强制类型转换 153

4.15 栈类实例 154

第5章 语句 159

5.1 简单语句和复合语句 159

5.2 声明语句 160

5.3 if语句 163

5.4 switch语句 170

5.5 for循环语句 176

5.6 while语句 180

5.7 do while语句 182

5.8 break语句 183

5.9 continue语句 184

5.10 goto语句 185

5.11 链表示例 186

5.11.1 给出一个通用链表类 203

第6章 抽象容器类型 209

6.1 我们的文本查询系统 209

6.2 vector还是list? 213

6.3 vecror怎样自己增长 214

6.4 定义一个顺序容器 217

6.5 迭代器 221

6.6 顺序容器操作 224

6.6.1 删除操作 226

6.6.2 赋值和对换 227

6.6.3 泛型算法 227

6.7 存储文本行 228

6.8 找到一个子串 231

6.9 处理标点符号 236

6.10 任意其他格式的字符串 239

6.11 其他string操作 241

6.12 生成文本位置map 247

6.12.1 定义并生成map 247

6.12.2 查找并获取map中的元素 251

6.12.3 对map进行迭代 252

6.12.4 单词转换map 253

6.12.5 从map中删除元素 255

6.13 创建单词排除集 256

6.13.1 定义set并放入元素 256

6.13.2 搜索一个元素 257

6.13.3 迭代一个set对象 257

6.14 完整的程序 258

6.15 multimap和multiset 267

6.16 栈 269

6.17 队列和优先级队列 271

6.18 回顾iStack类 272

第三篇 基于过程的程序设计 277

第7章 函数 277

7.1 概述 277

7.2 函数原型 279

7.2.1 函数返回类型 279

7.2.2 函数参数表 280

7.2.3 参数类型检查 281

7.3 参数传递 282

7.3.1 引用参数 284

7.3.2 引用和指针参数的关系 286

7.3.3 数组参数 289

7.3.4 抽象容器类型参数 291

7.3.5 缺省实参 293

7.3.6 省略号(ellipse) 295

7.4 返回一个值 297

7.4.1 参数和返回值与全局对象 300

7.5 递归 301

7.6 inline函数 302

7.7 链接指示符:extern“C” 304

7.8 main():处理命令行选项 306

7.8.1 一个处理命令行的类 313

7.9 指向函数的指针 315

7.9.1 指向函数的指针的类型 316

7.9.2 初始化和赋值 317

7.9.3 调用 317

7.9.4 函数指针的数组 318

7.9.5 参数和返回类型 319

7.9.6 指向extern“C”函数的指针 322

第8章 域和生命期 325

8.1 域 325

8.1.1 局部域 327

8.2 全局对象和函数 330

8.2.1 声明和定义 330

8.2.2 不同文件之间声明的匹配 331

8.2.3 谈谈头文件 333

8.3 局部对象 335

8.3.1 自动对象 335

8.3.2 寄存器自动对象 336

8.3.3 静态局部对象 337

8.4 动态分配的对象 338

8.4.1 单个对象的动态分配与释放 339

8.4.2 auto_ptr 341

8.4.3 数组的动态分配与释放 345

8.4.4 常量对象的动态分配与释放 346

8.4.5 定位new表达式 347

8.5 名字空间定义 349

8.5.1 名字空间定义 351

8.5.2 域操作符(∷) 353

8.5.3 嵌套名字空间 354

8.5.4 名字空间成员定义 356

8.5.5 ODR和名字空间成员 358

8.5.6 未命名的名字空间 359

8.6 使用名字空间成员 361

8.6.1 名字空间别名 361

8.6.2 using声明 362

8.6.3 using指示符 363

8.6.4 标准名字空间std 366

第9章 重载函数 369

9.1 重载函数声明 369

9.1.1 为什么要重载一个函数名 369

9.1.2 怎样重载一个函数名 370

9.1.3 何时不重载一个函数名 372

9.1.4 重载与域 373

9.1.5 extern“C”和重载函数 376

9.1.6 指向重载函数的指针 377

9.1.7 类型安全链接 378

9.2 重载解析的三个步骤 379

9.3 参数类型转换 381

9.3.1 精确匹配的细节 382

9.3.2 提升的细节 386

9.3.3 标准转换的细节 388

9.3.4 引用 391

9.4 函数重载解析细节 393

9.4.1 候选函数 394

9.4.2 可行函数 397

9.4.3 最佳可行函数 399

9.4.4 缺省实参 403

第10章 函数模板 405

10.1 函数模板定义 405

10.2 函数模板实例化 411

10.3 模板实参推演 414

10.4 显式模板实参 417

10.5 模板编译模式 420

10.5.1 包含编译模式 421

10.5.2 分离编译模式 421

10.5.3 显式实例化声明 423

10.6 模板显式特化 424

10.7 重载函数模板 428

10.8 考虑模板函数实例的重载解析 431

10.9 模板定义中的名字解析 437

10.10 名字空间和函数模板 442

10.11 函数模板示例 446

第11章 异常处理 449

11.1 抛出异常 449

11.2 try块 452

11.3 捕获异常 455

11.3.1 异常对象 456

11.3.2 栈展开 459

11.3.3 重新抛出 459

11.3.4 catch-all处理代码 461

11.4 异常规范 463

11.4.1 异常规范与函数指针 465

11.5 异常与设计事项 466

第12章 泛型算法 468

12.1 概述 468

12.2 使用泛型算述 471

12.3 函数对象 481

12.3.1 预定义函数对象 482

12.3.2 算术函数对象 484

12.3.3 关系函数对象 484

12.3.4 逻辑函数对象 485

12.3.5 函数对象的函数适配器 486

12.3.6 实现函数对象 486

12.4 回顾iterator 488

12.4.1 插入iterator 488

12.4.2 反向iterator 489

12.4.3 iostream iterator 490

12.4.4 istream_iterator 491

12.4.5 ostream_iterator 492

12.4.6 五种iterator 493

12.5 泛型算法 494

12.5.1 查找算法 495

12.5.2 排序和通用整序算法 495

12.5.3 删除和替换算法 496

12.5.4 排列组合算法 496

12.5.5 算术算法 496

12.5.6 生成和异变算法 496

12.5.7 关系算法 496

12.5.8 集合算法 497

12.5.9 堆算法 497

12.6 何时不用泛型算法 497

12.6.1 list∷merge() 498

12.6.2 list∷remove() 498

12.6.3 list∷remove_if() 498

12.6.4 list∷reverse() 499

12.6.5 list∷sort() 499

12.6.6 list∷splice() 499

12.6.7 list∷unique() 500

第四篇 基于对象的程序设计 503

第13章 类 503

13.1 类定义 503

13.1.1 数据成员 504

13.1.2 成员函数 505

13.1.3 成员访问 506

13.1.4 友元 507

13.1.5 类声明和类定义 508

13.2 类对象 509

13.3 类成员函数 511

13.3.1 inline和非inline成员函数 512

13.3.2 访问类成员 513

13.3.3 私有与公有成员函数 514

13.3.4 特殊的成员函数 517

13.3.5 const和volatile成员函数 517

13.3.6 mutable数据成员 520

13.4 隐含的this指针 521

13.4.1 何时使用this指针 523

13.5 静态类成员 525

13.5.1 静态成员函数 529

13.6 指向类成员的指针 532

13.6.1 类成员的类型 534

13.6.2 使用指向类成员的指针 536

13.6.3 静态类成员的指针 538

13.7 联合:一个节省空间的类 539

13.8 位域(bit-field):一种节省空间的成员 544

13.9 类域 545

13.9.1 类域中的名字解析 548

13.10 嵌套类 551

13.10.1 在嵌套类域中的名字解析 557

13.11 作为名字空间成员的类 559

13.12 局部类 562

第14章 类的初始化、赋值和析构 565

14.1 类的初始化 565

14.2 类的构造函数 567

14.2.1 缺省构造函数 572

14.2.2 限制对象创建 573

14.2.3 拷贝构造函数 574

14.3 类的析构函数 576

14.3.1 显式的析构调用 579

14.3.2 可能出现的程序代码膨胀 579

14.4 类对象数组和vector 581

14.4.1 堆数组的初始化 583

14.4.2 类对象的vector 585

14.5 成员初始化表 587

14.6 按成员初始化 592

14.6.1 成员类对象的初始化 595

14.7 按成员赋值 597

14.8 效率问题 600

第15章 重载操作符和用户定义的转换 605

15.1 操作符重载 605

15.1.1 类成员与非成员 608

15.1.2 重载操作符的名字 611

15.1.3 重载操作符的设计 612

15.2 友元 614

15.3 操作符= 616

15.4 操作符[] 618

15.5 操作符operator() 619

15.6 操作符-> 620

15.7 操作符++和-- 622

15.8 操作符new和delete 626

15.8.1 数组操作符new[]和delete[] 629

15.8.2 定位操作符new()和delete() 631

15.9 用户定义的转换 633

15.9.1 转换函数 636

15.9.2 用构造函数作为转换函数 640

15.10 选择一个转换 642

15.10.1 函数重载解析——回顾 644

15.10.2 候选函数 645

15.10.3 类域中的函数所调用的候选函数 647

15.10.4 对用户定义的转换序列划分等级 648

15.11 重载解析和成员函数 652

15.11.1 重载成员函数的声明 652

15.11.2 候选函数 653

15.11.3 可行函数 653

15.12 重载解析和操作符 656

15.12.1 候选的操作符函数 657

15.12.2 可行函数 660

15.12.3 二义性 661

第16章 类模板 664

16.1 类模板定义 664

16.1.1 Queue和QueueItem类模板的定义 669

16.2 类模板实例化 671

16.2.1 非类型参数的模板实参 675

16.3 类模板的成员函数 679

16.3.1 Queue和QueueItem模板成员函数 680

16.4 类模板中的友元声明 682

16.4.1 Queue和QueueItem的友元声明 684

16.5 类模板的静态数据成员 687

16.6 类模板的嵌套类型 689

16.7 成员模板 691

16.8 类模板和编译模式 695

16.8.1 包含编译模式 696

16.8.2 分离编译模式 697

16.8.3 显式实例声明 699

16.9 类模板特化 700

16.10 类模板部分特化 703

16.11 类模板中的名字解析 705

16.12 名字空间和类模板 707

16.13 模板数组类 709

第五篇 面向对象的程序设计 719

第17章 类继承和子类型 719

17.1 定义一个类层次结构 721

17.1.1 面向对象的设计 724

17.2 确定层次的成员 728

17.2.1 定义基类 728

17.2.2 定义派生类 732

17.2.3 小结 734

17.3 基类成员访问 736

17.4 基类和派生类的构造 743

17.4.1 基类构造函数 744

17.4.2 派生类构造函数 745

17.4.3 另外一个类层次结构 746

17.4.4 迟缓型错误检测(Lazy error detection) 749

17.4.5 析构函数 749

17.5 基类和派生类虚拟函数 751

17.5.1 虚拟的输入/输出 753

17.5.2 纯虚拟函数 757

17.5.3 虚拟函数的静态调用 759

17.5.4 虚拟函数和缺省实参 760

17.5.5 虚拟析构函数 762

17.5.6 eval()虚拟函数 764

17.5.7 虚拟new操作符 768

17.5.8 虚拟函数、构造函数和析构函数 770

17.6 按成员初始化和赋值 772

17.7 UserQuery管理类 776

17.7.1 定义UserQuery类 780

17.8 组合起来 784

第18章 多继承和虚拟继承 790

18.1 准备阶段 790

18.2 多继承 794

18.3 public、private和protected继承 800

18.3.1 继承与组合(composition) 802

18.3.2 免除(exempting)个别成员的私有继承影响 803

18.3.3 protected继承 804

18.3.4 对象组合 804

18.4 继承下的类域 806

18.4.1 多继承下的类域 809

18.5 虚拟继承 813

18.5.1 虚拟基类声明 815

18.5.2 特殊的初始化语义 816

18.5.3 构造函数与析构函数顺序 819

18.5.4 虚拟基类成员的可视性 820

18.6 多继承及虚拟继承实例 823

18.6.1 带有范围检查的Array派生类 825

18.6.2 排序的Array派生类 827

18.6.3 多重派生的Array类 832

第19章 C++中继承的用法 835

19.1 RTTI 835

19.1.1 dynamic_cast操作符 836

19.1.2 typeid操作符 840

19.1.3 type_info类 842

19.2 异常和继承 845

19.2.1 定义为类层次结构的异常 845

19.2.2 抛出类类型的异常 846

19.2.3 处理类类型的异常 847

19.2.4 异常对象和虚拟函数 849

19.2.5 栈展开和析构函数调用 851

19.2.6 异常规范 852

19.2.7 构造函数和函数try块 854

19.2.8 C++标准库的异常类层次结构 855

19.3 重载解析过程和继承 859

19.3.1 候选函数 859

19.3.2 可行函数和用户定义的转换序列 862

19.3.3 最佳可行函数 864

第20章 iostream库 868

20.1 输出操作符<< 872

20.2 输入 876

20.2.1 字符串输入 880

20.3 其他输入/输出操作符 886

20.4 重载输出操作符<< 891

20.5 重载输入操作符>> 895

20.6 文件输入和输出 897

20.7 条件状态 906

20.8 string流 908

20.9 格式状态 911

20.10 强类型库 917

附录 泛型算法(按字母排序) 919

accumulate() 920

adjacent_difference() 921

adjacent_find() 922

binary_search() 923

copy() 924

copy_backward() 925

count() 926

count_if() 927

equal() 929

equal_range() 930

fill() 932

fill_n() 933

find() 934

find_if() 935

find_end() 936

find_first_of() 937

for_each() 939

generate() 939

generate_n() 940

includes() 941

inner_product() 942

inplace_merge() 943

iter_swap() 944

lexicographical_compare() 945

lower_bound() 947

max() 948

max_element() 948

min() 948

min_element() 949

merge() 950

mismatch() 951

next_permutation() 952

nth_element() 953

partial_sort() 954

partial_sort_copy() 955

partial_sum() 956

partition() 957

prev_permutation() 958

random_shuffle() 959

remove() 960

remove_copy() 960

remove_if() 961

remove_copy_if() 961

replace() 962

replace_copy() 963

replace_if() 964

replace_copy_if() 964

reverse() 965

reverse_copy() 965

rotate() 966

rotate_copy() 966

search() 967

search_n() 968

set_difference() 969

set_intersection() 970

set_symmetric_difference() 970

set_union() 971

sort() 972

stable_partition() 973

stable_sort() 974

swap() 975

swap_range() 975

transform() 977

unique() 978

unique_copy() 978

upper_bound() 980

堆算法 981

make_heap() 981

pop_heap() 981

push_heap() 982

sort_heap() 982

英汉对照索引 984

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