《C++教程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)波尔(Pohl,I.)著;陈朔鹰等译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2007
  • ISBN:9787115167088
  • 页数:352 页
图书介绍:ANSI C++程序设计语言现在已经广泛应用于学术界和工业界,而且成为程序设计语言课程及计算机科学教学的的首选语言之一。本书通过程序示例和对C++程序设计语言关键特性的阐述,并对具体C++程序示例进行解析,详细介绍了程序设计的过程。书中贯穿着对软件工程实践的描述,覆盖程序正确性和类型安全性,深入解释函数和指针,强调面向对象程序设计的概念,详细介绍泛型程序设计和STL,为了理解面向对象程序设计引入了UML。本书适合作为计算机科学专业的第一门程序设计课程的教材。第一阶段指导学生如何编程,介绍C++程序设计语言,包括如何使用数组、指针及对象程序设计基础;第二阶段介绍更高级的数据类型、面向对象程序设计、泛型程序设计与STL、文件处理和软件工程。此外,本书也适合没有编程经验的读者作为自学C++的参考书。

第1章 编写一个ANSI C++程序 1

1.1 编程准备 1

1.2 第一个程序 2

1.3 问题求解:烹饪法 4

1.4 用C++实现算法 7

1.5 软件工程:风格 8

1.6 常见的编程错误 9

1.7 编写并运行一个C++程序 9

1.7.1 中断程序 11

1.7.2 键入一个文件结束符 11

1.8 Pohl博士的建议 11

1.9 C++与Java的比较 12

小结 13

复习题 14

习题 14

第2章 基本类型和语句 17

2.1 程序元素 17

2.1.1 注释 18

2.1.2 关键字 18

2.1.3 标识符 19

2.1.4 文字 20

2.1.5 运算符和标点符号 21

2.2 输入和输出 21

2.3 程序结构 23

2.4 简单类型 26

2.5 传统的类型转换 28

2.6 枚举类型 30

2.7 表达式 31

2.7.1 运算符的优先级和结合性 32

2.7.2 关系运算符、判等运算符和逻辑运算符 33

2.8 语句 36

2.8.1 赋值和表达式 36

2.8.2 复合语句 37

2.8.3 if和if-else语句 37

2.8.4 while语句 39

2.8.5 for语句 40

2.8.6 do语句 41

2.8.7 break语句和continue语句 42

2.8.8 switch语句 42

2.8.9 goto语句 44

2.9 软件工程:调试 44

2.10 Pohl博士的建议 47

2.11 C++与Java的比较 48

小结 49

复习题 50

习题 51

第3章 函数、指针和数组 54

3.1 函数 54

3.2 函数调用 54

3.3 函数定义 56

3.4 return语句 57

3.5 函数原型 57

3.6 传值调用 58

3.7 递归 59

3.8 默认参数 60

3.9 函数作为参数 62

3.10 重载函数 63

3.11 内联 64

3.12 作用域和存储类型 65

3.12.1 自动存储类型auto 66

3.12.2 外部存储类型extern 66

3.12.3 寄存器存储类型register 67

3.12.4 静态存储类型static 67

3.12.5 头文件和链接的秘密 68

3.13 名字空间 70

3.14 指针类型 71

3.14.1 取地址和解除引用 72

3.14.2 基于指针的引用调用 72

3.15 引用声明 73

3.16 void的用法 75

3.17 数组 75

3.17.1 下标 76

3.17.2 初始化 76

3.18 数组和指针 76

3.19 将数组传递给函数 77

3.20 问题求解:随机数 78

3.21 软件工程:结构化程序设计 80

3.22 核心语言ADT:char*字符串 82

3.23 多维数组 85

3.24 new和delete运算符 87

3.24.1 用向量代替数组 88

3.24.2 用string代替char* 89

3.25 软件工程:程序正确性 90

3.26 Pohl博士的建议 91

3.27 C++与Java的比较 92

小结 93

复习题 94

习题 94

第4章 类和抽象数据类型 100

4.1 聚集类型class和struct 100

4.2 成员选择运算符 101

4.3 成员函数 102

4.4 访问权限:私有和公有 105

4.5 类 106

4.6 类作用域 108

4.6.1 作用域解析运算符 108

4.6.2 嵌套类 109

4.7 示例:五张同花牌 110

4.8 this指针 114

4.9 static成员 115

4.10 const成员 116

4.11 容器类示例:ch_stack 118

4.12 软件工程:类的设计 120

4.12.1 设计中的折中 121

4.12.2 统一建模语言和设计 122

4.13 Pohl博士的建议 122

4.14 C++与Java的比较 123

4.15 高级主题 124

4.15.1 指向类成员的指针 124

4.15.2 联合 125

4.15.3 位域 126

小结 127

复习题 128

习题 128

第5章 构造函数、析构函数、类型转换与运算符重载 132

5.1 带有构造函数的类 133

5.1.1 默认构造函数 134

5.1.2 构造函数初始化式 134

5.1.3 用作类型转换的构造函数 135

5.1.4 改进point类 136

5.1.5 构造栈 137

5.1.6 复制构造函数 139

5.2 带有析构函数的类 141

5.3 类类型成员 141

5.4 示例:单向链表 142

5.5 使用引用语义的字符串 145

5.6 构造函数的问题和秘密 147

5.6.1 析构函数详解 148

5.6.2 构造函数语法 149

5.7 使用函数重载实现多态 149

5.8 ADT转换 150

5.9 重载和签名匹配 150

5.10 友元函数 153

5.11 重载运算符 154

5.12 一元运算符重载 155

5.13 二元运算符重载 157

5.14 重载赋值运算符 158

5.15 重载下标运算符 160

5.16 重载用于索引的()运算符 160

5.17 重载〈〈和〉〉运算符 160

5.18 重载-〉运算符 161

5.19 重载new和delete 163

5.20 更多签名匹配 164

5.21 软件工程:何时使用重载 165

5.22 Pohl博士的建议 166

5.23 C++与Java的比较 167

小结 171

复习题 172

习题 172

第6章 模板与泛型程序设计 177

6.1 模板类stack 179

6.2 函数模板 181

6.2.1 签名匹配与重载 182

6.2.2 如何编写简单函数square() 183

6.3 泛型代码开发:快速排序 184

6.4 类模板 189

6.4.1 友元 189

6.4.2 静态成员 189

6.4.3 类模板参数 190

6.4.4 默认模板参数 190

6.4.5 成员模板 191

6.5 参数化vector类 191

6.6 使用STL的string、vector和complex 193

6.6.1 string和basic_string<> 193

6.6.2 标准模板库中的vector<> 194

6.6.3 使用complex<> 195

6.6.4 limits和其他有用的模板 195

6.7 软件工程:复用和泛型 196

6.7.1 调试模板代码 196

6.7.2 特殊考虑 197

6.7.3 使用typename 198

6.8 Pohl博士的建议 198

6.9 C++与Java的比较 199

小结 201

复习题 201

习题 202

第7章 标准模板库 204

7.1 一个简单STL示例 204

7.2 容器 206

7.2.1 顺序容器 208

7.2.2 关联容器 209

7.2.3 容器适配器 213

7.3 迭代器 215

7.3.1 istream和ostream的迭代器 216

7.3.2 迭代器适配器 218

7.4 算法 219

7.4.1 排序算法 219

7.4.2 不可变序算法 221

7.4.3 变序性算法 223

7.4.4 数值算法 224

7.5 数值积分 226

7.6 STL:函数对象 228

7.6.1 建立函数对象 229

7.6.2 函数适配器 230

7.7 配置器 231

7.8 软件工程:使用STL 231

7.9 Pohl博士的建议 233

7.10 C++与Java的比较 234

小结 234

复习题 234

习题 235

第8章 继承与面向对象程序设计 237

8.1 派生类 238

8.2 学生是人 241

8.3 虚函数:动态限定 243

8.3.1 重载与重写 245

8.3.2 典型示例:shape类 246

8.4 抽象基类 247

8.5 模板与继承 253

8.6 多继承 254

8.7 RTTI以及其他需要注意的问题 255

8.8 软件工程:继承与设计 257

8.8.1 子类型 258

8.8.2 代码复用 258

8.9 Pohl博士的建议 259

8.10 C++与Java的比较 259

小结 261

复习题 262

习题 262

第9章 输入/输出 265

9.1 输出类ostream 265

9.2 格式化输出和iomanip 266

9.3 用户自定义类型的输出 269

9.4 输入类istream 271

9.5 文件 272

9.6 用字符串作为流 274

9.7 ctype中的函数和宏 275

9.8 使用流状态 276

9.9 混合I/O库 277

9.10 软件工程:I/O 278

9.11 Pohl博士的建议 279

9.12 C++与Java的比较 280

小结 281

复习题 282

习题 282

第10章 异常与程序正确性 285

10.1 使用assert库 285

10.2 C++的异常 287

10.3 抛出异常 287

10.3.1 重新抛出异常 289

10.3.2 异常表达式 290

10.4 try块 292

10.5 处理器 292

10.6 将断言转换为异常 293

10.7 异常说明 295

10.8 terminate()和unexpected() 296

10.9 标准异常及其应用 296

10.10 软件工程:异常对象 297

10.11 Pohl博士的建议 299

10.12 C++与Java的比较 299

小结 301

复习题 302

习题 302

第11章 使用C++进行面向对象程序设计 304

11.1 面向对象程序设计语言的特性 304

11.1.1 抽象数据类型:封装和数据隐藏 305

11.1.2 复用和继承 306

11.1.3 多态性 306

11.2 面向对象程序设计:主流程序设计方法 307

11.3 面向对象程序设计思想 312

11.4 类-职责-协作者 313

11.5 设计模式 315

11.6 深入了解C++ 315

11.6.1 C++为什么优于Java 316

11.6.2 C++的不足 316

11.7 软件工程:值得思考的问题 317

11.8 Pohl博士的建议 317

11.9 C++与Java的比较 318

小结 322

复习题 323

习题 323

附录A ASCII字符编码 325

附录B 运算符的优先级与结合性 326

附录C 字符串库 327

附录D tio库(图灵网站下载)索引 332