第1章 欢迎进入C++的多彩世界 1
1.1 对编程语言的感性认识与入门指导 1
1.2 由计算机语言的变革谈C++的产生 2
1.3 C++各个发展历程的特征简介 3
1.3.1 带类的C 3
1.3.2 从带类的C到C++ 3
1.3.3 C++的不断扩展 4
1.3.4 C++的标准化 4
1.4 本书的组织结构 4
第2章 为什么选择C++ 6
2.1 C语言概述 6
2.1.1 C语言的主要特征 6
2.1.2 C语言基本知识介绍 7
2.2 从C到C++的转变是必要的 14
2.3 C++对多种语言范型的支持 17
2.4 关于C++学习方法的一些建议 18
第3章 C++程序初涉 19
3.1 C++程序实现的基本原理 19
3.2 第一个C++程序 20
3.2.1 不容忽视的C++注释 21
3.2.2 C++的预处理指令分析 22
3.2.3 C++程序的主要部分 24
3.3 C++编译环境的使用说明 27
3.4 基本的输入输出流 28
3.4.1 用“cout<<”输出和用“cin>>”输入数据 29
3.4.2 如何输出程序错误信息 31
3.4.3 标准输出流的控制简介 33
第4章 从C++的最小程序单位讲起 38
4.1 C++的基本数据类型 38
4.2 C++的基本词法符号 39
4.2.1 C++的关键字 40
4.2.2 C++的标识符和标点符号 41
4.2.3 常量 42
4.3 数据类型的说明和转换 43
4.3.1 数据类型的说明 43
4.3.2 数据类型的强制转换 45
4.4 const和volatile对数据访问的控制 46
4.4.1 const在程序中的作用 47
4.4.2 volatile的用法 48
4.5 几种复合型的数据结构 50
4.5.1 结构体类型 50
4.5.2 枚举类型 53
4.5.3 联合类型 54
4.6 基本运算符和表达式 56
4.6.1 基本的运算符 56
4.6.2 表达式 66
第5章 如何用程序单位构建C++程序 67
5.1 C++的语句 67
5.1.1 表达式语句 67
5.1.2 C++的控制语句 68
5.2 函数 80
5.2.1 函数的定义 80
5.2.2 函数的调用 82
5.2.3 变量的生存特性 88
第6章 具备处理大量数据的能力 96
6.1 数字型数组 96
6.1.1 一维数组 96
6.1.2 二维数组及多维数组 100
6.2 字符型数组 102
6.2.1 字符型数组的定义和初始化 103
6.2.2 字符型数组的输入和输出 104
6.2.3 对字符型数组操作的函数 105
6.3 数组与其他数据结构的结合使用 109
6.3.1 数组与函数的结合使用 109
6.3.2 数组与结构体变量的结合 112
6.4 几个对数组进行实践操作的例子 114
第7章 你熟悉指针么 122
7.1 什么是指针 122
7.2 指针变量的定义和调用 123
7.3 指针与函数的结合 126
7.3.1 指针变量作函数参数 127
7.3.2 函数指针的使用 131
7.3.3 为什么要在函数中使用指针 134
7.4 指针和数组的结合 135
7.4.1 指针数组的定义与调用 135
7.4.2 数组元素的地址约定 137
7.4.3 指向数组的指针的调用 138
7.4.4 指向字符串的指针 139
7.5 指针与引用 142
7.6 const型的指针 145
第8章 “含类的C语言”的意义 149
8.1 类和对象的概念 149
8.1.1 类的概念 149
8.1.2 对象的概念 150
8.2 类和对象的定义 150
8.2.1 类的定义 151
8.2.2 类成员的访问限制 153
8.2.3 对象的定义 154
8.3 成员函数的定义和使用 155
8.3.1 一般成员函数的定义和使用 155
8.3.2 内联成员函数的定义和使用 157
8.3.3 其他几种特殊的函数类型 160
8.4 几个设计类与对象的例子 173
第9章 对象的初始化和控制 178
9.1 对象的初始化手段 178
9.1.1 使用初始化列表初始化结构体类 178
9.1.2 构造函数 179
9.1.3 析构函数 186
9.2 对象的控制 188
9.2.1 this指针 188
9.2.2 对象指针 192
9.2.3 对象组织 196
9.2.4 对象数组 202
第10章 继承与派生 207
10.1 继承和派生的概念 207
10.1.1 继承和派生的思想 207
10.1.2 C++中的继承机制 208
10.2 单一继承 213
10.2.1 单一继承的概念 213
10.2.2 公有的派生 213
10.2.3 私有的派生 217
10.2.4 保护的成员和派生 220
10.2.5 不能派生的友元类 223
10.2.6 继承中访问权限的总结 225
10.3 几个深化继承与派生概念的例子 226
第11章 继承与派生的深入研究 233
11.1 继承后的初始化问题 233
11.1.1 初始化问题的提出 233
11.1.2 带有参数的构造函数 234
11.1.3 析构函数的运用 237
11.2 多重继承 239
11.2.1 多重继承的概念 239
11.2.2 多重继承的实现 239
11.2.3 多重继承的初始化 241
11.3 继承的控制 243
11.3.1 赋值兼容规则 243
11.3.2 惟一性 245
11.3.3 成员覆盖现象 247
11.4 关于继承和派生规则的补充 253
11.4.1 无权限说明的继承行为 253
11.4.2 使用继承的时机 254
11.4.3 抽象类和私有类 255
第12章 多态性的编译体现 258
12.1 多态性的概念 258
12.2 编译时的多态 260
12.2.1 运算符重载的基本概念 260
12.2.2 运算符函数重载的形式 262
12.2.3 重载一元运算符 267
12.2.4 重载二元运算符 271
12.2.5 特殊运算符的重载约定 274
第13章 多态性的运行体现 282
13.1 虚函数的概念 282
13.2 虚函数的调用特点 285
13.2.1 虚函数的调用规则 285
13.2.2 虚函数的继承特性和访问权限 287
13.2.3 虚函数与成员覆盖函数的比较 289
13.2.4 虚函数的嵌套调用 291
13.2.5 虚函数无反作用性 293
13.2.6 虚函数有选择访问的实现 295
13.3 纯虚函数与抽象类 296
13.4 虚函数的应用举例 300