第1章C++语言概述 1
1.1 C++发展简史 1
1.1.1程序设计方法 1
1.1.2 C++发展简史 2
1.2 C++程序实例 3
1.2.1从一个简单的程序看C++程序的组成 3
1.2.2 C++字符集和关键字 4
1.2.3书写规则和程序设计风格 5
1.3 C++上机环境 5
1.3.1 C++程序的开发过程 5
1.3.2 C++集成开发环境有哪些 6
1.3.3 Visual C++和C++的关系 6
1.3.4 Visual C++ 6.0介绍 6
1.3.5在 Visual C++ 6.0中开发C++程序的过程 8
1.4习题一 11
第2章 数据类型与表达式 12
2.1基本数据类型 12
2.1.1关于整型的要点 12
2.1.2关于浮点型的要点 13
2.1.3关于字符型的要点 14
2.1.4关于布尔型的要点 14
2.1.5关于空类型的要点 14
2.2常量与变量 14
2.2.1关于常量的要点 14
2.2.2关于变量的要点 17
2.3指针类型 19
2.3.1地址、指针与指针变量之间的联系与区别 19
2.3.2什么是直接访问和间接访问 20
2.3.3什么是引用 20
2.4结构体与共用体 21
2.5枚举类型 23
2.6关于类型定义 24
2.7运算符 25
2.7.1算术运算符 26
2.7.2关系运算符 27
2.7.3逻辑运算符 28
2.7.4位运算符 28
2.7.5赋值运算符 29
2.7.6其他运算符 29
2.8表达式 30
2.8.1表达式的种类 30
2.8.2表达式的值和类型 31
2.8.3表达式中的类型转换 33
2.9习题二 35
第3章 控制结构 38
3.1编译预处理 38
3.1.1编译预处理的作用 38
3.1.2编译预处理语句 38
3.2顺序结构 40
3.2.1 C++输入输出 40
3.2.2顺序结构程序 41
3.3选择结构 42
3.3.1 if语句 42
3.3.2 switch语句 45
3.4循环结构 46
3.4.1循环结构的组成 46
3.4.2 while语句 47
3.4.3 do while语句 48
3.4.4 for语句 49
3.4.5三种循环结构的比较 50
3.4.6循环嵌套 51
3.5其他控制语句 52
3.5.1 break语句 53
3.5.2 continue语句 53
3.5.3 goto语句 54
3.6习题三 55
第4章 数组 58
4.1一维数组 58
4.1.1一维数组的声明 58
4.1.2一维数组的初始化 59
4.1.3一维数组应用举例 60
4.2二维数组 61
4.2.1二维数组的声明 61
4.2.2二维数组的初始化 62
4.2.3二维数组应用举例 62
4.3字符数组 63
4.3.1字符数组的定义 63
4.3.2字符数组的引用与赋值 63
4.3.3字符串处理函数 64
4.3.4字符数组举例 66
4.4指针和数组 67
4.4.1指针和一维数组 67
4.4.2指针和二维数组 68
4.4.3字符指针与字符串 70
4.5应用举例 71
4.5.1排序算法 71
4.5.2查找算法 73
4.6习题四 74
第5章 函数 79
5.1函数的定义和声明 79
5.1.1函数定义和声明的区别及注意事项 79
5.1.2函数值及其类型 80
5.2函数的调用 80
5.2.1函数调用的几种方式 80
5.2.2在调用时形参和实参应注意的问题 81
5.2.3设置函数默认值的注意事项 83
5.2.4函数的嵌套调用规则 84
5.2.5函数的递归调用 84
5.3内联函数 85
5.3.1内联函数引入的原因 85
5.3.2内联函数定义方法 85
5.3.3使用内联函数注意事项 85
5.4函数重载 85
5.4.1函数重载的概念 85
5.4.2函数重载应满足的条件 85
5.4.3函数重载的确定方法 86
5.4.4函数重载时应注意的问题 86
5.5作用域 86
5.5.1作用域的分类 86
5.5.2变量的分类 87
5.5.3函数的分类 88
5.6系统函数 88
5.7应用举例 88
5.8习题五 92
第6章 类与对象基础 96
6.1面向对象程序设计基础 96
6.1.1什么是面向对象程序设计 96
6.1.2面向对象程序设计的要素 96
6.2定义类与对象 97
6.2.1如何定义类 97
6.2.2如何定义对象 99
6.3对象的初始化 100
6.4成员函数 104
6.4.1成员函数的访问 104
6.4.2析构函数 106
6.5静态成员 107
6.5.1静态数据成员 107
6.5.2静态成员函数 108
6.6友元 110
6.7类的作用域与对象的生存期 112
6.7.1类的作用域 112
6.7.2对象的生存期 113
6.8习题六 113
第7章 类与对象的应用 116
7.1类与指针 116
7.1.1使用指向对象的指针 116
7.1.2使用指向类成员的指针 117
7.1.3使用this指针 119
7.2类与数组 120
7.2.1对象数组与普通数组的异同 120
7.2.2对象指针数组与指针数组的关系 123
7.2.3指向对象数组的指针与指向数组的指针的比较 124
7.3类中const关键词的使用 126
7.3.1使用const修饰对象 126
7.3.2使用const修饰类中的成员 126
7.4子对象与堆对象的使用 127
7.4.1子对象的初始化与使用 127
7.4.2堆空间与堆对象 129
7.5习题七 131
第8章 继承与派生 134
8.1为什么使用继承 134
8.2继承的工作方式 134
8.2.1基类与派生类的概念及其关系 134
8.2.2从基类中派生新类 135
8.2.3继承下的访问控制 136
8.3派生类对象的初始化和撤销 138
8.3.1单继承下的构造函数和析构函数 138
8.3.2多继承下的构造函数和析构函数 140
8.4虚基类的使用 141
8.4.1定义虚基类 141
8.4.2虚基类的初始化 142
8.5继承的使用原则 143
8.5.1类的组合 143
8.5.2什么情况下使用组合 143
8.5.3什么情况下使用继承 144
8.5.4类型兼容原则 144
8.6习题八 145
第9章 多态性 148
9.1理解多态性 148
9.2编译时多态性的函数重载 148
9.3编译时多态性的运算符重载 150
9.3.1运算符重载的形式 150
9.3.2运算符重载的使用原则 152
9.4运行时多态性的虚函数 152
9.4.1动态联编的实现条件 153
9.4.2虚函数的使用原则 153
9.5习题九 154
第10章C++的I/O流类库 157
10.1标准输入和输出 157
10.1.1输入输出流的控制符 158
10.1.2用于控制输入、输出格式的流成员函数 160
10.1.3 write和read函数 161
10.1.4 cin与cout 162
10.1.5流成员函数get()和put() 163
10.2字符串流 164
10.2.1 ostrstream类的构造函数 165
10.2.2 istrstream类的构造函数 166
10.3磁盘文件的I/O操作 167
10.3.1磁盘文件的打开和关闭 168
10.3.2流错误的处理 169
10.3.3文本文件的读和写 170
10.3.4二进制文件的读和写 173
10.4习题十 179
第11章 模板 182
11.1函数模板和模板函数的区别 182
11.1.1函数模板定义 182
11.1.2模板参数与调用参数 184
11.2类模板与模板类 187
11.2.1类模板的定义 187
11.2.2模板类 190
11.3习题十一 195
第12章C++开发实例 197
12.1需求分析 197
12.2系统总体设计 197
12.3系统主要模块的设计与实现 198
12.4系统的软硬件环境 203
12.5系统的使用说明 203
12.6程序框架代码 206
第13章 实验操作 215
实验一Visual C++ 6.0集成开发环境 215
实验二 数据类型、常量、变量 217
实验三 运算符与表达式(一) 221
实验四 运算符与表达式(二) 223
实验五 选择结构 227
实验六 循环结构 231
实验七 循环嵌套 235
实验八 一维数组 238
实验九 二维数组与字符数组 240
实验十 函数的定义及参数传递 243
实验十一 函数递归及作用域 246
实验十二 内联函数及函数重载 253
实验十三 类和对象定义 255
实验十四 构造函数与析构函数 260
实验十五 友元函数与静态成员 264
实验十六 指向类成员的指针 268
实验十七 指针数组与数组指针 270
实验十八 对象数组与指针 272
实验十九 类的继承和派生 275
实验二十 类的综合应用 278
实验二十一 运算符重载 281
实验二十二 静态联编和动态联编 285
实验二十三 输入/输出流与文件的访问 289
实验二十四 综合实验 294
习题参考答案 296
附录A C++关键字列表 302
附录B C++常见错误提示 305
附录C C++字符串操作函数列表 307
参考文献 308