书籍详情
C++ Primer中文版(第三版)
作者:(美)Stanley B.Lippman,(美)Josee Lajoie著;潘爱民,张丽译
出版社:中国电力出版社
出版时间:2002-04-01
ISBN:9787508309897
定价:¥128.00
购买这本书可以去
内容简介
C++ Primer的第三版结合了Stanley B.Lippman的实践经验和Josée Lajoie对于ANSI/ISO标准C++的深入理解。这本指导书的第三版已经被重新改写过,以便更加精确地讲述标准C++的特性和用法。在本书中,对于C++初学者特别有价值的是一些来自真实世界中的程序例子,它们说明了泛型程序(generic program)的设计、面向对象程序的设计、模板的用法,以及使用标准C++进行程序设计的方方面面。而且,本书也在适当的地方讲到了一些习惯用法以及效率指导。 第三版的变化分为四类: 1.涵盖了语言所增加的新特性:异常处理、运行时刻类型识别、名字空间、内置bool类型、新风格的类型强制转换。 2.涵盖了新的C++标准库,包括complex和string类型、auto_ptr和pair类型、顺序容器和关联容器类型(主要是list、vector、map、set容器),以及泛型算法。 3.对原来的文字作了调整,以反映出标准C++对原有语言特性的精炼、变化以及扩展。语言精炼的一个例子是,现在能够前向声明一个嵌套类型,这在以前是不允许的。语言变化的一个例子是,一个虚拟函数的派生类实例能够返回一个“基类实例的返回类型”的派生类。这种变化支持一个被称为clone 或factory的方法(关于clone()虚拟函数,见17.5.7节说明)。对原有语言特性进行扩展的一个例子是,现在可以显式地指定一个函数模板的一个或多个模板实参。(实际上,模板已经被大大地扩展了,差不多已经成为一个新特性!) 4.加强了对C++高级特性的对待和组织方式,尤其是对于模板、类以及面向对象程序设计。Stan从一个相对较小的C++提供者团体到一般的C++用户团体的转移,带来的一个影响是,他相信,越是深入地了解问题,则程序员越是能够高明地使用C++语言。因此,在第三版中,许多情况下,我们已经把焦点转移到如何更好地说明底层特性的概念,以及怎样最好地使用它们,并指出在适当的时候应该避免潜在的缺陷。
作者简介
Stanley Lippman 他的职业是提供关于C++和面向对象的训练、咨询、设计和指导。他在成为一名独立咨询顾问之前,曾经是迪士尼动画公司的首席软件设计师。当他在AT&T B ell实验室的时候,领导了cfront 3.0版本和2.1版本的编译器开发组他也是Bjarne Stroustrup领导的Bell实验室Foundation项目的成员之一,负责C++程序设计环境中的对象模型部分。Stan是本书所有三个版本的作者,他还撰写了许多关于C++的文章。目前他已受雇于微软公司,负责Visual C++项目。Josee Lajoie 是IBM加拿大实验室的C/C++编译器开发组的一名成员,也是ANSI/ISO C++标准委员会的核心语言工作组的主席。Josee是《C++ Report》杂志的专栏作家,目前正在滑铁卢大学的计算机图形实验室攻读硕士学位。潘爱民 浙江海宁人,现任职于北京大学计算机科学技术研究所,副研究员,研究方向为网络与信息安全。自1994年至1999年,他一直从事计算机软件开发方面的工作。1998年到今,了利用业余时间著译了多部关于软件开发的著作,如《Visual C++技术内幕》(第四版),《COM原理与应用》、《COM本质论》、《深入解析ATL》等。1999年他还是《微电脑世界》杂志社的合作专家,撰写了大量深入权威的技术文章。1991年他在南开大学数学系获学士学位,1994年在清华大学自动化系获硕士学位。
目录
第一篇 C++概述
第1章 开始 3
1.1 问题的解决 3
1.2 C++程序 4
1.3 预处理器指示符 10
1.4 注释 14
1.5 输入/输出初步 16
第2章 C++浏览 20
2.1 内置数组数据类型 20
2.2 动态内存分配和指针 23
2.3 基于对象的设计 26
2.4 面向对象的设计 36
2.5 泛型设计 44
2.6 基于异常的设计 50
2.7 用其他名字来命名数组 54
2.8 标准数组--向量(vector) 59
第二篇 基本语言
第3章 C++数据类型 67
3.1 文字常量 67
3.2 变量 70
3.3 指针类型 78
3.4 字符串类型 83
3.5 const限定修饰符 91
3.6 引用类型 94
3.7 布尔类型 99
3.8 枚举类型 100
3.9 数组类型 102
3.10 vector容器类型 110
3.11 复数类型 113
3.12 Typedef名字 114
3.13 volatile 115
3.14 pair类型 116
3.15 类(class)类型 117
第4章 表达式 127
4.1 什么是表达式 127
4.2 算术操作符 129
4.3 等于、关于和逻辑操作符 131
4.4 赋值操作符 134
4.5 递增和递减操作符 138
4.6 复数操作 140
4.7 条件操作符 143
4.8 sizeof操作符 144
4.9 new和delete表达式 146
4.10 逗号操作符 148
4.11 位操作符 148
4.12 bitset操作 151
4.13 优先级 155
4.14 这表型转换 158
4.15 栈类实例 167
第5章 语句 171
5.1 简单语句和复合语句 171
5.2 声明语句 172
5.3 if语句 175
5.4 switch语句 183
5.5 for循环语句 190
5.6 while循环 194
5.7 do while 196
5.8 break语句 198
5.9 continue语句 199
5.10 goto语句 199
5.11 链表例子 201
第6章 抽象容器类型 226
6.1 我们的文本查询系统 227
6.2 vector还是list? 230
6.3 cector怎样自己增长 231
6.4 定义一个顺序容器 234
6.5 迭代器 238
6.6 顺序容器操作 242
6.7 存储文本行 246
6.8 找到一个子串 249
6.9 处理标点符号 255
6.10 注意其他格式的字符串 258
6.11 其他string操作 261
6.12 生成文本位置map 266
6.13 创建单词排除集 276
6.14 完整的程序 279
6.15 multimap和multiset 288
6.16 栈(stack) 291
6.17 队列(queue)和优先队列(priority_queue) 293
6.18 回顾iStack类 294
第三篇 基本过程的程序设计
第7章 函数 299
7.1 概述 299
7.2 函数原型 302
7.3 参数传递 305
7.4 返回一个值 322
7.5 递归 326
7.6 inline函数 328
7.7 链接指示符:extern"C" 329
7.8 main():处理命令行选项 332
7.9 指向函数的指针※ 342
第8章 域和生命期 353
8.1 域 353
8.2 全局对象和函数 358
8.3 局部对象 364
8.4 动态分配的对象 367
8.5 名字空间定义 ※ 379
8.6 使用名字空间成员 ※ 391
第9章 重载函数 400
9.1 重载函数声明 400
9.2 重载解析的三个步骤 411
9.3 参数类型转换 ※ 413
9.4 函数重载解析细节 426
第10章 函数模板 439
10.1 函数模板定义 439
10.2 函数模板实例化 446
10.3 模板实参推演 ※ 449
10.4 显式模板实参 ※ 453
10.5 模板编译模式 ※ 456
10.6 模板显式特化 ※ 460
10.7 重载函数模板 ※ 465
10.8 考虑模板函数实例的重载解析 ※ 467
10.9 模板定义中的名字解析 ※ 474
10.10 名字空间和函数模板 ※ 480
10.11 函数模板示例 484
第11章 异常处理 487
11.1 抛出异常 487
11.2 try块 490
11.3 捕获异常 494
11.4 异常规范 502
11.5 异常与设计事项 505
第12章 泛型算法 507
12.1 概述 507
12.2 使用泛型算述 510
12.3 函数对象 520
12.4 回顾iterator 528
12.5 泛型算法 535
12.6 何时不用泛型算法 538
第四篇 基于对象的程序设计
第13章 类 545
13.1 类定义 545
13.2 类对象 552
13.3 类成员函数 554
13.4 隐含的this指针 565
13.5 静态类成员 570
13.6 指向类成员的指针 576
13.7 联合(union):一个节省空间的类 585
13.8 位域(bit-field):一种节省空间的成员 590
13.9 类域 ※ 591
13.10 嵌套类 598
13.11 作为名字空间成员的类 ※ 607
13.12 局部类 ※ 610
第14章 类的初始化、赋值和析构 613
14.1 类的初始化 613
14.2 类的构造函数 615
14.3 类的析构函数 625
14.4 类对象数组和vector 631
14.5 成员初始化表 637
14.6 按成员初始化 ※ 643
14.7 按成员赋值 ※ 648
14.8 效率问题 651
第15章 重载操作符和用户定义的转换 657
15.1 操作符重载 657
15.2 友元(friend) 666
15.3 操作符 = 669
15.4 操作符 [] 671
15.5 操作符operator() 672
15.6 操作符 -> 674
15.7 操作符 ++和-- 676
15.8 操作符new和delete 680
15.9 用户定义的转换 688
15.10 选择一个转换 ※ 697
15.11 重载解析和成员函数 ※ 708
15.12 重载解析和操作符 ※ 713
第16章 类模板 722
16.1 类模板定义 722
16.2 类模板实例化 730
16.3 类模板的成员函数 739
16.4 类模板中的友元(friend)声明 742
16.5 类模板的静态数据成员 747
16.6 类模板的嵌套类型 749
16.7 成员模板 ※ 752
16.8 类模板和编译模式 ※ 756
16.9 类模板特化 ※ 762
16.10 类模板部分特化 ※ 765
16.11 类模板中的名字解析 ※ 767
16.12 名字空间和类模板 ※ 769
16.13 模板数组类 771
第五篇 面向对象的程序设计
第17章 类继承和子类型 781
17.1 定义一个类层次结构 784
17.2 确定层次的成员 790
17.3 基类成员访问 800
17.4 基类和派生类的构造 807
17.5 基类和派生类虚拟函数 816
17.6 按成员初始化和赋值 ※ 839
17.7 UserQuery管理类 844
17.8 把它组合在一起 852
第18章 多继承和虚拟继承 858
18.1 准备阶段 858
18.2 多继承 862
18.3 public、private和protected继承 868
18.4 继承下的类域 875
18.5 虚拟继承 ※ 883
18.6 多继承及虚拟继承实例 ※ 893
18.7 按成员赋值 ※ 648
18.8 效率问题 651
第19章 C++中继承的用法 906
19.1 运行时刻类型识别 906
19.2 异常和继承 916
19.3 重载解析过程和继承 ※ 932
第20章 iostream库 942
20.1 输出操作符<< 946
20.2 输入 951
20.3 其他输入/输出操作符 962
20.4 重载输出操作符<< 968
20.5 重载输入操作符>> 972
20.6 文件输入和输出 975
20.7 条件状态 984
20.8 string流(字符串流) 986
20.9 格式状态 989
20.10 一个强类型库 997
附录 泛型算法(按字母序) 999
第1章 开始 3
1.1 问题的解决 3
1.2 C++程序 4
1.3 预处理器指示符 10
1.4 注释 14
1.5 输入/输出初步 16
第2章 C++浏览 20
2.1 内置数组数据类型 20
2.2 动态内存分配和指针 23
2.3 基于对象的设计 26
2.4 面向对象的设计 36
2.5 泛型设计 44
2.6 基于异常的设计 50
2.7 用其他名字来命名数组 54
2.8 标准数组--向量(vector) 59
第二篇 基本语言
第3章 C++数据类型 67
3.1 文字常量 67
3.2 变量 70
3.3 指针类型 78
3.4 字符串类型 83
3.5 const限定修饰符 91
3.6 引用类型 94
3.7 布尔类型 99
3.8 枚举类型 100
3.9 数组类型 102
3.10 vector容器类型 110
3.11 复数类型 113
3.12 Typedef名字 114
3.13 volatile 115
3.14 pair类型 116
3.15 类(class)类型 117
第4章 表达式 127
4.1 什么是表达式 127
4.2 算术操作符 129
4.3 等于、关于和逻辑操作符 131
4.4 赋值操作符 134
4.5 递增和递减操作符 138
4.6 复数操作 140
4.7 条件操作符 143
4.8 sizeof操作符 144
4.9 new和delete表达式 146
4.10 逗号操作符 148
4.11 位操作符 148
4.12 bitset操作 151
4.13 优先级 155
4.14 这表型转换 158
4.15 栈类实例 167
第5章 语句 171
5.1 简单语句和复合语句 171
5.2 声明语句 172
5.3 if语句 175
5.4 switch语句 183
5.5 for循环语句 190
5.6 while循环 194
5.7 do while 196
5.8 break语句 198
5.9 continue语句 199
5.10 goto语句 199
5.11 链表例子 201
第6章 抽象容器类型 226
6.1 我们的文本查询系统 227
6.2 vector还是list? 230
6.3 cector怎样自己增长 231
6.4 定义一个顺序容器 234
6.5 迭代器 238
6.6 顺序容器操作 242
6.7 存储文本行 246
6.8 找到一个子串 249
6.9 处理标点符号 255
6.10 注意其他格式的字符串 258
6.11 其他string操作 261
6.12 生成文本位置map 266
6.13 创建单词排除集 276
6.14 完整的程序 279
6.15 multimap和multiset 288
6.16 栈(stack) 291
6.17 队列(queue)和优先队列(priority_queue) 293
6.18 回顾iStack类 294
第三篇 基本过程的程序设计
第7章 函数 299
7.1 概述 299
7.2 函数原型 302
7.3 参数传递 305
7.4 返回一个值 322
7.5 递归 326
7.6 inline函数 328
7.7 链接指示符:extern"C" 329
7.8 main():处理命令行选项 332
7.9 指向函数的指针※ 342
第8章 域和生命期 353
8.1 域 353
8.2 全局对象和函数 358
8.3 局部对象 364
8.4 动态分配的对象 367
8.5 名字空间定义 ※ 379
8.6 使用名字空间成员 ※ 391
第9章 重载函数 400
9.1 重载函数声明 400
9.2 重载解析的三个步骤 411
9.3 参数类型转换 ※ 413
9.4 函数重载解析细节 426
第10章 函数模板 439
10.1 函数模板定义 439
10.2 函数模板实例化 446
10.3 模板实参推演 ※ 449
10.4 显式模板实参 ※ 453
10.5 模板编译模式 ※ 456
10.6 模板显式特化 ※ 460
10.7 重载函数模板 ※ 465
10.8 考虑模板函数实例的重载解析 ※ 467
10.9 模板定义中的名字解析 ※ 474
10.10 名字空间和函数模板 ※ 480
10.11 函数模板示例 484
第11章 异常处理 487
11.1 抛出异常 487
11.2 try块 490
11.3 捕获异常 494
11.4 异常规范 502
11.5 异常与设计事项 505
第12章 泛型算法 507
12.1 概述 507
12.2 使用泛型算述 510
12.3 函数对象 520
12.4 回顾iterator 528
12.5 泛型算法 535
12.6 何时不用泛型算法 538
第四篇 基于对象的程序设计
第13章 类 545
13.1 类定义 545
13.2 类对象 552
13.3 类成员函数 554
13.4 隐含的this指针 565
13.5 静态类成员 570
13.6 指向类成员的指针 576
13.7 联合(union):一个节省空间的类 585
13.8 位域(bit-field):一种节省空间的成员 590
13.9 类域 ※ 591
13.10 嵌套类 598
13.11 作为名字空间成员的类 ※ 607
13.12 局部类 ※ 610
第14章 类的初始化、赋值和析构 613
14.1 类的初始化 613
14.2 类的构造函数 615
14.3 类的析构函数 625
14.4 类对象数组和vector 631
14.5 成员初始化表 637
14.6 按成员初始化 ※ 643
14.7 按成员赋值 ※ 648
14.8 效率问题 651
第15章 重载操作符和用户定义的转换 657
15.1 操作符重载 657
15.2 友元(friend) 666
15.3 操作符 = 669
15.4 操作符 [] 671
15.5 操作符operator() 672
15.6 操作符 -> 674
15.7 操作符 ++和-- 676
15.8 操作符new和delete 680
15.9 用户定义的转换 688
15.10 选择一个转换 ※ 697
15.11 重载解析和成员函数 ※ 708
15.12 重载解析和操作符 ※ 713
第16章 类模板 722
16.1 类模板定义 722
16.2 类模板实例化 730
16.3 类模板的成员函数 739
16.4 类模板中的友元(friend)声明 742
16.5 类模板的静态数据成员 747
16.6 类模板的嵌套类型 749
16.7 成员模板 ※ 752
16.8 类模板和编译模式 ※ 756
16.9 类模板特化 ※ 762
16.10 类模板部分特化 ※ 765
16.11 类模板中的名字解析 ※ 767
16.12 名字空间和类模板 ※ 769
16.13 模板数组类 771
第五篇 面向对象的程序设计
第17章 类继承和子类型 781
17.1 定义一个类层次结构 784
17.2 确定层次的成员 790
17.3 基类成员访问 800
17.4 基类和派生类的构造 807
17.5 基类和派生类虚拟函数 816
17.6 按成员初始化和赋值 ※ 839
17.7 UserQuery管理类 844
17.8 把它组合在一起 852
第18章 多继承和虚拟继承 858
18.1 准备阶段 858
18.2 多继承 862
18.3 public、private和protected继承 868
18.4 继承下的类域 875
18.5 虚拟继承 ※ 883
18.6 多继承及虚拟继承实例 ※ 893
18.7 按成员赋值 ※ 648
18.8 效率问题 651
第19章 C++中继承的用法 906
19.1 运行时刻类型识别 906
19.2 异常和继承 916
19.3 重载解析过程和继承 ※ 932
第20章 iostream库 942
20.1 输出操作符<< 946
20.2 输入 951
20.3 其他输入/输出操作符 962
20.4 重载输出操作符<< 968
20.5 重载输入操作符>> 972
20.6 文件输入和输出 975
20.7 条件状态 984
20.8 string流(字符串流) 986
20.9 格式状态 989
20.10 一个强类型库 997
附录 泛型算法(按字母序) 999
猜您喜欢