1 0.8指向派生类型的指针 34 1
12.6 运行时类型标识(RTTI) 43 1
12.4.1 命名空间的基础知识 42 1
11.7.4 peek()和putback() 38 1
11.7.3 检测EOF 38 1
11.7.2 getline() 38 1
目 录 1
第1章C++基础 1
1.1 C++简史 1
1.1.1 C语言:现代编程的开端 2
1.1.2对C++的需求 2
1.1.3 C++的诞生 3
1.2 C++的演化 3
1.3 C++同Java与C#的关系 4
1.4面向对象编程 5
1.4.1 封装性 6
1.4.2 多态性 6
1.4.3 继承性 7
12.3.3给对象分配内存 41 7
1.5.1 键入程序 8
1.5.2编译程序 8
1.5第一个简单的程序 8
1.5.3运行程序 9
1.5.4逐行讲解第一个示例程序 10
1.6处理语法错误 11
1.7另一个简单的程序 12
1.8使用运算符 13
1.9读取键盘输入 15
10.1 继承 3 16
1.10一些输出选项 16
1.11 另一种数据类型 18
1.12两条控制语句 21
1.12.1 if语句 21
1.12.2 for循环 23
1.13使用代码块 24
1.14分号与定位 25
1.15 函数 28
1.16 C++的库 30
1.17 C++的关键字 31
1.18标识符 31
1.19本章自测 32
2.2 C++的数据类型 33
第2章数据类型和运算符 33
2.1数据类型的重要意义 33
2.2.1 整型数据 36
2.2.2字符型数据 37
2.2.3浮点型数据 38
2.2.4布尔型数据 39
2.2.5Void型数据 40
2.3 字面值 42
2.3.1 十六进制和八进制的字面值 43
2.3.2字符串字面值 44
2.3.3字符转义序列 44
2.4变量详解 45
2.4.2动态初始化 46
2.4.1初始化变量 46
2.5 运算符 47
2.6算术运算符 47
2.7关系运算符和逻辑运算符 50
2.8.1复合赋值运算符 54
2.8赋值运算符 54
2.8.2赋值运算中的类型转换 55
2.10表达式中的类型转换 56
2.9表达式 56
2.10.1布尔型的转换 56
2.10.2类型强制转换 56
2.11 空格和圆括号 57
2.12 本章自测 60
3.1 if语句 62
第3章程序控制语句 62
3.1.1条件表达式 64
3.1.2嵌套的if语句 65
3.1.3 if-else-if阶梯语句 66
3.2 switch语句 67
3.3 for循环语句 74
3.3.1 for循环语句的一些变化 75
6.2.1返回引用 1 77
3.3.2可以缺少的部分 77
3.3.4无循环体的循环 78
3.3.3 无限for循环 78
3.3.5在for语句循环体内声明循环控制变量 79
3.4 while循环语句 80
3.5 do-while循环 82
3.6使用break语句退出循环 87
3.7使用continue语句 89
3.8嵌套的循环 93
3.9使用goto语句 95
3.10 本章自测 95
第4章数组、字符串和指针 97
4.1 一维数组 97
4.2二维数组 101
4.3多维数组 102
4.4字符串 105
4.4.1字符串基本知识 105
4.4.2从键盘中读取字符串 106
4.5.2 strcat函数 108
4.5.3 strcmp函数 108
4.5.1 strcpy函数 108
4.5一些字符串库函数 108
4.5.5字符串函数实例 109
4.5.4 strlen函数 109
4.5.6使用null终结符 110
4.6数组的初始化 111
4.7字符串数组 115
4.8 指针 116
4.10指针运算符 117
4.9指针的概念 117
4.10.1指针的基本类型很重要 118
4.10.2通过指针赋值 120
4.11指针表达式 121
4.11.1指针运算 121
4.11.2指针的比较 122
4.12指针和数组 123
4.13字符串常量 127
4.14 指针数组 130
4.15 null指针的约定 131
4.16多重间接访问 132
4.1 7 本章自测 134
第5章函数简介 135
5.1.1 函数的通式 135
5.1 函数的基础知识 135
5.1.2创建函数 136
5.1.3使用实际参数 137
5.1.4使用return语句 139
5.1.5返回值 141
5.1.6在表达式中使用函数 143
5.2作用域法则 144
5.2.1局部作用域 144
5.2.2全局作用域 149
5.3.1 传递指针 151
5.3将指针和数组传递给函数 151
5.3.2传递数组 152
5.3.3传递字符串 155
5.4返回指针 156
5.5.1 给main()函数传送命令行参数 157
5.5 main()函数 157
5.5.2传递数字命令行参数 159
5.6 函数原型 160
5.7 递归 162
5.8本章自测 168
6.1.1 C++如何传递参数 170
6.1传递参数的方法 170
第6章函数详解 170
6.1.2使用指针创建按引用调用 171
6.2引用参数 173
6.2.2独立引用 179
6.2.3使用引用时的几个限制 180
6.3 函数重载 181
6.4默认的函数参数 193
6.4.1默认参数与重载 194
6.4.2正确使用默认参数 196
6.5函数重载和多义性 197
6.6本章自测 199
7.1 const和volatile限定符 201
7.1.1 const限定符 201
第7章更多数据类型和运算符 201
7.1.2 volatile限定符 203
7.2存储类说明符 204
7.2.2 extern说明符 204
7.2.1 auto说明符 204
7.2.3 static变量 205
7.2.4 register变量 209
7.3枚举 210
7.4 typedef关键字 213
7.5按位运算符 214
7.5.1 AND、OR、XOR和NOT运算符 215
7.5.2移位运算符 219
7.6 ?运算符 226
7.7逗号运算符 227
7.10使用sizeof运算符 229
7.9复合赋值 229
7.8 多重赋值 229
7.12本章自测 231
7.11优先级小结 231
8.1.1类的通式 233
8.1类的基础知识 233
第8章类和对象 233
8.1.2定义类并创建对象 234
8.1.3 向类中添加函数 238
8.2构造函数和析构函数 246
8.2.1带参数的构造函数 248
8.2.2将构造函数添加到Vehicle类中 250
8.2.3另一种初始化方法 251
8.3 内联函数 253
8.4对象数组 261
8.5指向对象的指针 264
8.7本章自测 266
8.6对象引用 266
9.1 重载构造函数 267
第9章类的详解 267
9.2 对象赋值 268
9.3将对象传递给函数 270
9.3.1 构造函数、析构函数和对象传递 271
9.3.2 通过引用传递对象 273
9.3.3传递对象时潜在的问题 274
9.4返回对象 275
9.5创建和使用拷贝构造函数 277
9.6友元函数 280
9.7结构体和共用体 285
9.7.1 结构体 285
9.7.2共用体 286
9.7.3匿名共用体 288
9.8 This关键字 289
9.9运算符重载 291
9.10使用成员函数进行运算符重载 291
9.10.1顺序的重要性 294
9.10.2使用成员函数重载一元运算符 295
9.11 非成员运算符函数 299
9.11.1使用友元重载一元运算符 303
9.11.2运算符重载的技巧和限制 305
9.12本章自测 315
第10章继承、虚函数和多态性 316
10.2基类访问控制 322
1 0.3 使用受保护的成员 324
10.4构造函数和继承 326
10.5创建多层结构 336
10.6继承多个基类 339
10.7构造函数和析构函数执行的顺序 340
10.9.1 虚函数的基础知识 342
10.9虚函数和多态性 342
10.9.2继承虚函数 344
10.10应用虚函数 346
10.9.3使用虚函数的原因 346
10.1 1 纯虚函数和抽象类 350
10.12本章自测 354
第1 1章C++I/O系统 355
11.1 对早期和现代的C++I/O进行比较 355
1 1.3 C++流类 356
1 1.2 C++流 356
11.4重载I/O运算符 358
11.4.1创建插入函数 358
11.4.2使用友元函数重载插入函数 360
11.4.3重载提取函数 361
1 1.5格式化I/O 362
11.5.1 使用ios成员函数进行格式化 363
11.5.2使用I/O操控符 368
11.5.3创建自己的操控符函数 370
11.6.1 打开和关闭文件 372
1 1.6 文件I/O 372
1 1.6.2读写文本文件 374
1 1.6.3非格式化和二进制I/O 376
11.6.4读写数据块 378
11.7更多的I/O函数 380
1 1.7.1 更多的get()版本 380
11.7.5 flush() 381
1 1.8 随机存取 385
11.9检查I/O状态 388
1 1.1 0本章自测 389
第12章异常、模板和其他高级主题 390
12.1 异常处理 390
12.1.1异常处理的基础知识 390
12.1.2使用多个catch语句 395
12.1.3捕获所有异常 397
12.1.4指定由函数抛出的异常 398
12.1.5再次抛出异常 400
12.2模板 401
12.2.1通用函数 402
12.2.2具有两个通用类型的函数 403
1 2.2.3 显式重载通用函数 404
12.2.4通用类 406
12.2.5显式的类具体化 408
12.3动态分配内存 413
12.3.1初始化分配的内存 415
12.3.2给数组分配内存 416
12.4 命名空间 420
12.4.2 using语句 424
12.4.3 匿名命名空间 426
12.4.4 std命名空间 426
12.5静态类成员 427
12.5.1 静态成员变量 427
12.5.2静态成员函数 429
12.7强制类型转换运算符 434
12.7.1dynamic_cast 435
12.7.2const_cast 435
12.7.3static_cast 436
12.7reinterpret_cast 436
12.8接下来做什么 436
12.9本章自测 437
附录A预处理器 438
附录B使用旧版本C++编译器 448
附录C测验答案 450