《C++大学自学教程 第7版》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)Al Stevens著;林瑶等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2004
  • ISBN:7505392603
  • 页数:636 页
图书介绍:C++自1980年问世以来,已发展成在世界范围有广泛影响的面向对象的语言。全书有五个部分,共40章。第1部分介绍C++语言的基本元素。第2部分讲解C++类机制,这是大多数标准C++库的实现都用到的一种语言特性,也是支持用户进行面向对象程序开发的机制。第三部分详细介绍标准C++库的组成部分,包括从C语言继承的标准C库函数和标准的C++字符串类、复数类、I/O流类等。第四部分介绍实现通用容器、算法和迭代器的标准模板库,读者将学习如何进行通用编程。第五部分讨论标准C++支持的高级特性,包括异常处理、名字空间、类型强制转换、运行时类型信息、区域表示等。本书所带光盘提供了Quincy 2002集成开发环境和本书程序示例的所有源代码,读者可通过装入并运行示例加深对本书内容的理解。本书自成体系、叙述简洁、深入浅出,是学习完整的C++语言的优秀读物。本书适合希望使用C++进行编程的程序员,也可供面向对象程序设计的研究、开发人员参考。

第1部分 C++语言 1

第1章 C++程序设计概述 3

1.1 C++简史 3

1.2 C++介绍 4

1.2.1 核心C++语言 4

1.2.1.1 函数 4

1.2.1.2 类 6

1.2.1.3 main函数 6

1.2.1.4 剖析函数 7

1.2.1.5 语句 7

1.2.1.6 程序流控制 10

1.2.1.7 异常处理 10

1.2.1.8 模板机制 10

1.2.1.9 名字空间 10

1.2.1.10 声明次序 10

1.2.2 标准C++库 11

1.2.3 源代码文件 12

1.3 小结 12

第2章 编写简单的C++程序 13

2.1 第一个程序 13

2.1.1 #include指令 13

2.1.2 空白 14

2.1.3 main函数声明 14

2.1.4 main函数语句块 14

2.1.5 源代码注释 15

2.1.6 向控制台写入信息 15

2.1.7 return语句 15

2.1.8 终止语句块 16

2.2 标识符 16

2.3 关键字 16

2.4 标准输出流 17

2.5 变量 18

2.5.1 布尔型 18

2.5.2 字符型 19

2.5.3 wchar_t型 20

2.5.4 整型 21

2.5.5 浮点数 22

2.6 常量 22

2.6.1 字符常量 23

2.6.2 转义序列 23

2.6.3 整数常量 24

2.6.4 浮点常量 24

2.6.5 地址常量 25

2.6.6 字符串常量 25

2.7 表达式 26

2.8 赋值 26

2.9 以逗号分隔的声明 27

2.10 表达式中的运算符 28

2.10.1 算术运算符 28

2.10.2 逻辑运算符 29

2.10.3 位逻辑运算符 30

2.10.4 移位运算符 31

2.10.5 关系运算符 32

2.10.6 增量运算符和减量运算符 33

2.10.7 赋值运算符 34

2.10.8 复合赋值运算符 35

2.10.9 条件运算符 36

2.10.10 逗号运算符 38

2.11 结合性和优先级 38

2.11.1 结合性 39

2.11.2 优先级 40

2.12 表达式何时不被求值 40

2.13 初始式 41

2.14 类型转换 42

2.15 控制台输入/输出 43

2.15.1 标准输出流 43

2.15.2 格式化输出 44

2.15.3 标准错误流 45

2.15.4 标准输入流 45

2.16 一个问题 46

2.17 小结 46

第3章 函数 47

3.1 再论main函数 48

3.2 实参与形参 48

3.3 用原型声明函数 49

3.3.1 未命名的形参类型 49

3.3.2 典型的原型 49

3.3.3 返回void的函数 49

3.3.4 没有形参的函数 50

3.3.5 形参表可变的函数 50

3.3.6 不返回值且没有形参的函数 50

3.3.7 标准库原型 50

3.3.8 没有原型的函数 50

3.4 定义和调用函数 51

3.5 函数返回 51

3.6 函数返回值 53

3.7 实参的传递和使用 53

3.7.1 标识符作用域 54

3.7.2 利用函数调用实现初始化 55

3.7.3 初始式的执行顺序 55

3.7.4 传递多个实参 55

3.7.5 用做实参的函数调用 56

3.7.6 值传递 56

3.7.7 实参和返回值的类型转换 56

3.8 未命名的函数形参 56

3.9 默认函数实参 57

3.10 内联函数 58

3.11 递归 59

3.12 函数重载 59

3.12.1 不同操作的重载 59

3.12.2 不同格式的重载 60

3.13 小结 61

第4章 程序流程控制 63

4.1 语句块 63

4.1.1 嵌套深度 63

4.1.2 缩进风格 64

4.2 条件测试 65

4.2.1 if语句 65

4.2.2 if...else语句 67

4.2.3 else if语句 68

4.2.4 switch...case语句 69

4.2.5 if条件表达式内的声明 70

4.3 循环迭代 70

4.3.1 while语句 71

4.3.2 do...while语句 72

4.3.3 复合条件运算符 73

4.3.4 for语句 74

4.3.5 for条件表达式中的声明 75

4.4 循环控制 75

4.4.1 break语句 75

4.4.2 continue语句 76

4.5 跳转语句 77

4.5.1 goto的非法使用 77

4.5.2 C++的goto与C的goto 78

4.5.3 修改非法goto 78

4.5.4 使用goto的争议 79

4.6 小结 80

第5章 C++数据类型结构 81

5.1 作用域 81

5.1.1 全局作用域 81

5.1.2 局部作用域 82

5.1.3 全局作用域解析运算符 83

5.1.4 文件作用域 84

5.1.5 作用域、可见性和生存期 85

5.2 存储类 86

5.2.1 auto存储类 86

5.2.2 static存储类 86

5.2.3 extern存储类 87

5.2.4 register存储类 89

5.3 初始默认值 89

5.4 类型限定词 89

5.4.1 const类型限定词 90

5.4.2 volatile类型限定词 90

5.5 程序存储器体系结构 91

5.5.1 外部变量存储器和静态变量存储器 92

5.5.2 堆 92

5.5.3 栈 92

5.6 小结 93

第6章 结构和联合 95

6.1 结构 95

6.1.1 声明结构 96

6.1.2 定义结构变量 96

6.1.3 引用struct成员 97

6.1.4 初始化结构 97

6.1.5 结构的内部结构 98

6.1.6 结构与函数 98

6.2 联合 99

6.2.1 初始化联合 100

6.2.2 匿名联合 101

6.3 面向对象程序设计浅析 102

6.3.1 数据类型的特征 102

6.3.2 定义数据类型 103

6.3.2.1 何谓抽象 103

6.3.2.2 何谓对象 103

6.3.2.3 数据抽象和过程化程序设计 103

6.3.2.4 数据抽象和封装 104

6.3.3 包含函数的结构 105

6.3.3.1 给结构增加函数 105

6.3.3.2 同一结构的多个实例 106

6.3.3.3 函数名相同的结构 107

6.3.4 访问描述符 108

6.3.5 是否应该使用过程化程序设计 108

6.4 类 109

6.4.1 类与结构 109

6.4.2 C++联合 110

6.5 小结 110

第7章 C++数据进阶 111

7.1 枚举常量 111

7.2 类型强制转换 112

7.2.1 C类型强制转换 113

7.2.2 C++类型强制转换 113

7.3 数组 113

7.3.1 声明数组 114

7.3.2 用下标访问数组 114

7.3.3 初始化数组 114

7.3.4 结构数组 115

7.3.5 多维数组 116

7.3.6 字符数组 117

7.4 sizeof运算符 118

7.5 typedef描述符 120

7.6 小结 121

第8章 指针、地址和动态存储器 123

8.1 指针和地址 123

8.1.1 指向内部类型的指针 124

8.1.2 指针的算术运算 125

8.1.3 指针和数组 127

8.1.4 指向结构的指针 129

8.1.5 指针和地址作为函数实参 130

8.1.6 从函数返回地址 132

8.1.7 指向函数的指针 134

8.1.8 指向指针的指针 136

8.1.9 指向指针数组的指针 138

8.1.10 指向const变量的指针 138

8.1.11 const指针变量 139

8.1.12 void指针 140

8.2 堆的动态存储器分配 141

8.2.1 new和delete运算符 142

8.2.2 分配固定维数的数组 142

8.2.3 分配动态数组 143

8.2.4 处理堆耗尽 144

8.3 小结 144

第9章 引用变量 145

9.1 引用即别名 146

9.2 引用初始化 147

9.3 简化复杂表示法的引用 147

9.4 引用做函数形参 148

9.5 引用调用 150

9.6 const型引用形参 151

9.7 返回引用 151

9.8 const型返回引用 152

9.9 返回对自动变量的引用 152

9.10 指针与引用 153

9.11 小结 153

第10章 递归 155

10.1 递归函数 155

10.2 简单递归举例 156

10.3 递归下降计算器 157

10.4 递归的取舍 160

10.5 小结 160

第11章 预处理器 161

11.1 预处理指令 161

11.2 包含文件 162

11.3 宏 163

11.3.1 #define指令 163

11.3.2 带实参的#define 164

11.3.3 表示法和对齐 169

11.3.4 “#”串化运算符 169

11.3.5 “##”运算符 169

11.3.6 #undef指令 170

11.4 编译期条件指令 170

11.4.1 #if指令 171

11.4.2 #endif指令 171

11.4.3 #if defined指令 171

11.4.4 #ifdef和#ifndef指令 172

11.4.5 #else指令 172

11.4.6 #elif指令 172

11.4.7 #error指令 173

11.5 其他标准指令 174

11.5.1 #line指令 174

11.5.2 #pragma指令 174

11.6 深入#include指令 174

11.7 小结 174

第12章 函数模板 175

12.1 函数模板基础 175

12.2 函数模板专门化 177

12.3 用模板排序 179

12.4 小结 181

第13章 程序组织结构 183

13.1 程序的组成 183

13.1.1 源代码文件 183

13.1.2 翻译单元 184

13.1.3 目标模块 185

13.1.4 目标库 185

13.1.5 共享目标库或动态链接库 185

13.1.6 可执行文件 186

13.1.7 集成开发环境 186

13.2 安全类型链接 187

13.3 链接说明 188

13.4 argc和argv命令行实参 191

13.4.1 命令行通配符扩展 193

13.4.2 命令行实参约定 193

13.5 标准输入/输出重定向 194

13.5.1 重定向到文件 194

13.5.2 管道和过滤器 195

13.6 打印报告 196

13.6.1 用输出重定向打印 197

13.6.2 打印到文件 197

13.6.3 打印到打印机设备 197

13.7 小结 198

第2部分 使用类 199

第14章 C++类 201

14.1 类声明 201

14.2 类成员 202

14.3 访问说明符:类成员的可见性 202

14.4 结构和类的对比 203

14.5 数据成员 203

14.6 初始化 204

14.7 成员函数 204

14.8 面向对象类的设计 205

14.9 类对象的作用域和生存期 205

14.10 内联函数 206

14.11 小结 207

第15章 构造函数和析构函数 209

15.1 构造函数 209

15.1.1 构造函数的运行 209

15.1.1.1 对象存储器 210

15.1.1.2 对象初始化 210

15.1.1.3 没有参数的构造函数 211

15.1.2 使用默认参数的构造函数 211

15.1.3 默认构造函数 212

15.1.4 重载构造函数 212

15.1.5 复制构造函数 214

15.1.6 构造函数的形参初始化列表 216

15.2 析构函数 217

15.3 小结 219

第16章 转换 221

16.1 类转换 221

16.2 转换函数 221

16.2.1 转换构造函数 221

16.2.2 成员转换函数 223

16.3 转换类对象 224

16.4 调用转换函数 226

16.5 发生转换的上下文 227

16.6 显式构造函数 229

16.7 表达式内部的转换 230

16.8 小结 231

第17章 类对象数组 233

17.1 数组中的类对象 233

17.2 类对象数组和默认构造函数 234

17.3 类对象数组和析构函数 235

17.4 小结 236

第18章 类成员 237

18.1 this指针 237

18.2 操纵私用数据成员 239

18.2.1 getter和setter成员函数 240

18.2.2 const成员函数 241

18.2.3 改进的成员转换函数 241

18.3 static成员 243

18.3.1 static数据成员 243

18.3.2 static成员函数 244

18.3.3 引用指针 246

18.3.4 公用static成员 246

18.4 小议const 246

18.5 mutable数据成员 248

18.6 引用数据成员 249

18.7 小结 251

第19章 友元 253

19.1 友元类 253

19.2 隐含构造 254

19.3 前向引用 255

19.4 显式友元前向引用 255

19.5 友元函数 256

19.6 非成员友元函数 256

19.7 小结 258

第20章 类和堆 259

20.1 构造函数和new,析构函数和delete 259

20.2 堆和类数组 260

20.3 重载类的new和delete运算符 261

20.4 测试异常 263

20.5 重载new和delete异常 264

20.6 重载类的new数组和delete数组 264

20.7 小结 266

第21章 重载运算符 267

21.1 重载与否 267

21.2 重载运算符的情况 268

21.3 重载运算符的规则 269

21.4 重载赋值运算符 270

21.4.1 声明重载赋值运算符operator= 270

21.4.2 定义重载赋值运算符operator= 271

21.4.3 返回*this 271

21.4.4 简单的重载赋值运算符函数 272

21.4.5 重载赋值的原因 273

21.5 二元算术运算符 276

21.5.1 类成员运算符函数 276

21.5.2 非成员运算符函数 278

21.6 关系运算符 281

21.7 其他赋值运算符 283

21.8 自动增量和自动减量 284

21.9 一元加、减运算符 286

21.10 下标运算符 287

21.11 成员指针运算符 288

21.12 小结 290

第22章 类库 291

22.1 对象与目标 291

22.2 组织和构建对象库 292

22.2.1 头文件和对象模块文件 292

22.2.2 库的文件名 293

22.2.3 库的兼容性 293

22.2.4 类和函数库 294

22.2.5 模板库 294

22.3 链接对象库 294

22.4 对象库的种类 295

22.4.1 通用库 295

22.4.2 通用数据类型库 295

22.4.2.1 Date类 295

22.4.2.2 SSN和MONEY数据抽象 297

22.4.3 问题域库 297

22.4.4 应用框架 298

22.5 库头文件 298

22.6 类模板库 298

22.7 小结 298

第23章 类的继承 299

23.1 类继承 299

23.2 专门化的数据抽象类设计 302

23.2.1 基类 303

23.2.2 高效率设计 303

23.2.3 单重继承 304

23.2.4 派生类 304

23.2.5 受保护成员 305

23.2.6 派生和专用成员 305

23.2.7 公用基类和私用基类 305

23.2.8 基类和派生类中的构造函数 306

23.2.9 新成员函数的专门化 306

23.2.10 通过覆盖基类成员函数实现专门化 307

23.2.11 生成程序 307

23.2.12 基类和派生类的作用域解析运算符 308

23.2.13 多个派生类 309

23.2.14 第2个派生类 309

23.2.15 使用基类和两个派生类 311

23.2.16 派生类之间没有关联 311

23.2.17 派生基类的派生类 312

23.3 问题域类层次结构的设计 315

23.3.1 C++与纯粹的面向对象设计 315

23.3.2 更多的数据抽象 316

23.3.3 标准C++字符串类 317

23.4 Person:基类 317

23.4.1 类中的枚举 318

23.4.2 基类中的虚函数 318

23.4.3 抽象基类:纯虚函数 318

23.4.4 两种显示方法 319

23.5 派生类 319

23.5.1 Employee类 319

23.5.2 覆盖一个函数覆盖 319

23.5.3 WageEmployee类 320

23.5.4 SalariedEmployee类 320

23.5.5 Contractor类 321

23.6 建立对象库 321

23.7 使用问题域类层次结构 322

23.8 虚函数 324

23.8.1 通过引用调用虚函数 324

23.8.2 覆盖虚函数的覆盖 325

23.9 虚析构函数 325

23.10 多态 327

23.11 小结 328

第24章 多重继承 329

24.1 多个基类 329

24.1.1 多重继承时构造函数的运行 330

24.1.2 多重继承时析构函数的运行 331

24.2 完善财产系统的设计 331

24.3 用多重继承覆盖成员 332

24.4 多重继承的歧义 333

24.4.1 歧义成员函数 333

24.4.2 歧义数据成员 333

24.4.3 在设计中解决歧义 334

24.4.4 不可避免的歧义 335

24.5 虚基类 335

24.6 实现设计 336

24.6.1 DisplayObject类 336

24.6.2 Vehicle类 337

24.6.3 Property类 338

24.6.4 Asset和Expense类 339

24.6.5 Compute和Pencils类 340

24.6.6 CompanyCar和LeaseCar类 340

24.6.7 应用程序 340

24.7 练习 341

24.8 小结 341

第25章 类模板 343

25.1 类模板的基础知识 343

25.2 声明多个类模板对象 344

25.3 调用类模板成员函数 345

25.4 声明多个形参 345

25.5 重载运算符模板函数 346

25.6 默认实参值 347

25.7 有界数组的类模板 348

25.8 何时使用类模板 350

25.9 模板的专门化 351

25.9.1 类模板的专门化 351

25.9.2 模板成员函数的专门化 352

25.9.3 部分模板的专门化 353

25.10 默认类型的形参 354

25.11 关键字typename 355

25.11.1 typename消除模板的歧义 355

25.11.2 typename与class 358

25.12 类模板和抽象 359

25.13 小结 360

第3部分 使用类 361

第26章 标准C库函数 363

26.1 <cassert>头文件 364

26.2 <cctype>头文件 365

26.3 <cerrno>头文件 366

26.4 <cmath>头文件 367

26.5 <csetjmp>头文件 367

26.6 <cstdarg>头文件 369

26.7 <cstdio>头文件 370

26.7.1 全局符号 371

26.7.2 控制台函数 371

26.7.2.1 格式化字符串和记号 371

26.7.2.2 std∷printf函数 373

26.7.2.3 std∷scanf函数 373

26.7.2.4 std∷sprintf和std∷sscanf函数 374

26.7.2.5 std∷fprintf和std∷fscanf函数 374

26.7.2.6 std∷getchar和std∷putchar函数 374

26.8 <cstdlib>头文件 375

26.8.1 数值函数 375

26.8.2 内存分配函数 375

26.8.3 系统函数 376

26.8.4 随机数产生函数 376

26.9 <cstring>头文件 377

26.10 <ctime>头文件 379

26.11 小结 380

第27章 标准C++库 381

27.1 字符串和IOStream模扳 381

27.2 std∷string类 381

27.2.1 字符串构造 381

27.2.2 字符串赋值 382

27.2.3 字符串拼接 382

27.2.4 字符串下标 382

27.2.5 字符串比较 382

27.2.6 子字符串 383

27.2.7 查找字符串 383

27.2.8 字符串运算 383

27.3 IOStream类 385

27.3.1 std∷ios类 385

27.3.2 std∷ostream类 386

27.3.3 std∷istream类 386

27.3.4 缓冲输出 386

27.3.5 输出成员函数 387

27.3.6 输入成员函数 388

27.4 std∷complex类 390

27.5 小结 391

第28章 格式化IOStream和stringstream类 393

28.1 IOStream 393

28.2 格式化输出 393

28.3 操纵符、标记和成员函数 394

28.3.1 ios∷width函数 394

28.3.2 std∷setw操纵符 395

28.3.3 std∷ios∷fill函数 396

28.3.4 输出对齐 396

28.3.5 setprecision操纵符 397

28.3.6 科学表示法和定点表示法 398

28.3.7 std∷ios∷setf函数和std∷ios∷unsetf函数 399

28.3.8 格式化标记 400

28.3.9 格式化操纵符 401

28.3.10 格式化函数 401

28.4 std∷stringstream类 402

28.4.1 std∷istringstream类 402

28.4.2 std∷ostringstream类 403

28.4.3 std∷stringstream类 403

28.5 小结 404

第29章 文件I/O流 405

29.1 文件流对象 405

29.2 打开模式 406

29.2.1 默认打开模式 406

29.2.2 有效的打开模式组合 407

29.2.3 常见的打开情况 407

29.3 二进制和文本文件流 408

29.4 std∷ofstream类 409

29.4.1 创建文件 409

29.4.2 追加到现有文件 410

29.5 文件流成员函数 411

29.5.1 write成员函数 411

29.5.2 其他成员函数:open,put,tellp和close 413

29.6 std∷ifstream类 414

29.7 读到文件尾 414

29.8 在文件中查找 415

29.9 读/写流文件的std∷fstream类 417

29.10 文件和流的关联和分离 418

29.11 输入/输出的变化 418

29.12 测试错误 420

29.13 删除文件 421

29.14 小结 422

第4部分 标准模板库 423

第30章 STL简介 425

30.1 为什么需要STL 425

30.2 STL编程模型 426

30.3 序列 426

30.4 容器适配器 426

30.5 结合容器 427

30.6 迭代器 427

30.7 算法 428

30.8 谓词 429

30.9 分配器 429

30.10 小结 429

第31章 STL序列容器 431

31.1 序列容器 431

31.2 vector类模板 432

31.2.1 插入和访问向量元素 433

31.2.2 删除向量元素 434

31.2.3 向量的比较 436

31.2.4 vector成员函数 437

31.3 deque类模板 438

31.3.1 插入和访问双端队列元素 439

31.3.2 删除双端队列元素 441

31.3.3 双端队列的比较 442

31.3.4 deque成员函数 443

31.4 链表类模板 444

31.4.1 插入链表元素 445

31.4.2 删除链表元素 447

31.4.3 链表的比较 448

31.4.4 list成员函数 449

31.5 std∷stack容器适配器 450

31.6 std∷queue容器适配器 452

31.7 std∷priority_queue容器适配器 453

31.8 小结 454

第32章 结合容器 455

32.1 结合容器 455

32.2 std∷set类模板 455

32.2.1 插入集合元素 457

32.2.2 删除集合元素 457

32.2.3 查找集合元素 458

32.2.4 集合的比较 459

32.2.5 set成员函数 461

32.3 std∷multiset类模板 461

32.3.1 插入multiset元素 463

32.3.2 删除multiset元素 464

32.3.3 查找multiset元素 465

32.3.4 比较multiset对象 466

32.3.5 multiset成员函数 467

32.4 std∷map类模板 468

32.4.1 在map中插入元素 470

32.4.2 删除map元素 471

32.4.3 查找map元素 472

32.4.4 比较map对象 473

32.4.5 map成员函数 475

32.5 std∷multimap类模板 476

32.5.1 在multimap中插入元素 477

32.5.2 删除multimap元素 477

32.5.3 查找multimap元素 479

32.5.4 比较multimap对象 480

32.5.5 multimap成员函数 481

32.6 std∷bitset类模板 482

32.6.1 操作bitset中的位 483

32.6.2 测试bitset中的位 484

32.6.3 比较bitset对象 485

32.6.4 bitset成员函数 486

32.7 用户自定义谓词 487

32.8 小结 489

第33章 通用算法 491

33.1 通用算法简介 491

33.2 非修改算法 492

33.3 变异算法 495

33.4 排序算法 499

33.5 数值算法 507

33.6 小结 511

第34章 迭代器 513

34.1 迭代器简介 513

34.2 输入迭代器 514

34.3 输出迭代器 515

34.4 前向迭代器 516

34.5 双向迭代器 517

34.6 随机访问迭代器 518

34.7 特殊用途迭代器 520

3.7.1 流迭代器 520

34.7.1.1 输入流迭代器 520

34.7.1.2 输出流迭代器 521

34.7.2 迭代器适配器 523

34.7.2.1 反向迭代器 523

34.7.2.2 插入迭代器 524

34.8 小结 526

第5部分 高级问题 527

第35章 异常处理 529

35.1 C的异常处理 529

35.2 C++的异常处理 531

35.2.1 try块 531

35.2.2 catch异常处理函数 532

35.2.3 throw语句 532

35.2.4 try/throw/catch序列 532

35.3 全数捕捉异常处理函数 536

35.4 从处理函数中抛出异常 537

35.5 未捕捉的异常 538

35.6 在多个抛出的异常中选择 540

35.7 异常和未释放的资源 541

35.8 改进的计算器程序 542

35.9 标准异常 544

35.10 std∷exception∷what成员函数 547

35.11 异常说明 547

35.12 未预料到的异常 548

35.13 小结 548

第36章 名字空间 549

36.1 名字空间的问题 549

36.2 名字空间简介 550

36.3 引用名字空间的成员 550

36.4 using namespace语句 551

36.5 定义名字空间 552

36.6 嵌套的名字空间 553

36.7 未命名的名字空间 554

36.8 名字空间的别名 554

36.9 Koenig查找 555

36.10 小结 557

第37章 C++类型强制转换 559

37.1 C++类型强制转换 559

37.2 dynamic_cast运算符 559

37.2.1 向下强制转换指针 560

37.2.2 向下强制转换引用 561

37.2.3 向上强制 562

37.3 static_cast运算符 562

37.4 reinterpret_cast运算符 564

37.5 const_cast运算符 564

37.6 小结 566

第38章 运行时类型信息 567

38.1 typeid运算符 567

38.2 type_info类 568

38.2.1 constchar*type_info∷name() 568

38.2.2 bool type_info∷before(const type_info&rhs) 568

38.3 用RTTI编程 568

38.4 RTTI的用法 570

38.5 小结 571

第39章 区域表示 573

39.1 国际化元素 573

39.2 std∷locale类 574

39.2.1 标准刻面 574

39.2.2 默认和全局的区域表示 575

39.3 创建区域表示对象 575

39.4 创建混合的区域表示 578

39.5 流和区域表示 579

39.6 处理刻面 580

39.7 小结 581

第40章 面向对象程序设计 583

40.1 对象和C++程序员 583

40.2 基础知识 584

40.3 过程化程序设计 584

40.4 面向对象程序设计 584

40.4.1 面向对象的程序 585

40.4.2 对象 586

40.4.3 抽象 586

40.4.4 封装 587

40.4.5 方法和消息 588

40.4.5.1 函数方法 589

40.4.5.2 数据类型方法 589

40.4.5.3 隐式转换方法 590

40.4.5.4 成员函数 590

40.4.6 继承 590

40.4.6.1 单重继承 591

40.4.6.2 多重继承 591

40.4.7 类的关系 591

40.4.8 多态 592

40.5 小结 592

附录A 库清单 593

附录B 光盘内容 605

附录C Quincy 2002用户指南 607

附录D C++对照表 613

附录E 参考书目 619

词汇表 621