目录



第1章C++程序设计基础1
1.1C++的发展和主要特点1
1.1.1C++的发展1
1.1.2C++的特点1
1.2第一个C++程序以及C++程序开发过程1
1.2.1第一个C++程序1
1.2.2C++程序开发过程4
1.3C++的常用新特性5
1.3.1C++的输入输出5
1.3.2const定义常量6
1.3.3函数重载7
1.3.4有默认参数的函数9
1.3.5变量的引用11
1.3.6动态分配和释放内存的运算符new和delete16
1.3.7布尔类型18
1.4实例研究: 破解数字谜语19
1.5程序陷阱21
习题122第2章类和对象24
2.1由结构到类的发展24
2.1.1带函数的结构24
2.1.2从结构到类的演化26
2.2面向对象程序设计技术27
2.2.1对象27
2.2.2抽象和类27
2.2.3封装28
2.2.4继承28
2.2.5多态性28
2.3C++类的声明与对象的定义28
2.3.1类的声明28
2.3.2在类体外定义成员函数30
2.3.3定义对象的方法31
2.3.4对象成员的引用33
2.4构造函数34
2.4.1构造函数的定义34
2.4.2用初始化表对数据成员进行初始化和使用默认参数36
2.5析构函数37
2.6构造函数和析构函数的一般执行顺序39
2.7复制构造函数41
2.8用const保护数据46
2.8.1常对象成员46
2.8.2常对象49
2.8.3对象的常引用52
2.9字符串53
2.10友元55
2.10.1友元函数55
2.10.2友元类58
2.11静态成员59
2.11.1静态数据成员59
2.11.2静态成员函数61
2.12this指针63
2.13程序陷阱65
习题266第3章模板75
3.1模板的概念75
3.2函数模板及模板函数77
3.2.1函数模板的声明及生成模板函数77
3.2.2重载函数模板79
3.3类模板及模板类81
3.3.1类模板的声明及生成模板类82
3.3.2在类型形参表中包含常规参数的类模板84
3.4实例研究: 快速排序86
3.5程序陷阱88
习题390第4章运算符重载93
4.1运算符重载的概念93
4.2运算符重载方式96
4.2.1运算符重载为类的成员函数97
4.2.2运算符重载为类的友元函数99
4.2.3运算符重载为普通函数102
4.3典型运算符重载104
4.3.1重载赋值运算符(=)104
4.3.2重载自增1运算符(++)和自减1运算符()108
4.3.3重载下标运算符([])111
4.3.4重载函数调用运算符(())112
4.3.5重载输入运算符(>>)和输出运算符(<<)113
4.4程序陷阱116
习题4116第5章继承118
5.1继承与派生118
5.1.1继承与派生的概念118
5.1.2派生类的声明119
5.1.3派生类与基类中的同名成员123
5.2继承方式125
5.2.1公有继承125
5.2.2私有继承128
5.2.3保护成员和保护继承130
5.3派生类的构造函数和析构函数136
5.3.1构造函数136
5.3.2析构函数140
5.4多继承与虚基类142
5.4.1多继承142
5.4.2多继承引起的多义性问题144
5.4.3虚基类146
5.5程序陷阱151
习题5152第6章多态性159
6.1多态性的概念159
6.2虚函数160
6.2.1虚函数的概念160
6.2.2虚析构函数166
6.3纯虚函数和抽象类168
6.4实例研究: 栈的实现172
6.5程序陷阱179
习题6180第7章输入输出流185
7.1C++的输入输出185
7.1.1输入输出的概念185
7.1.2C++的输入输出流185
7.2标准输出流对象cout186
7.2.1cout186
7.2.2格式输出186
7.2.3输出流类成员函数put()190
7.3标准输入流对象cin191
7.3.1cin191
7.3.2输入流类的常用字符输入的成员函数191
7.3.3输入流类的其他常用成员函数193
7.4文件操作与文件流196
7.4.1文件和文件流的概念196
7.4.2文件的打开与关闭操作197
7.4.3对文本文件的操作199
7.4.4对二进制文件的操作204
7.5实例研究: 简单工资管理系统208
7.6程序陷阱219
习题7221第8章C++的其他主题225
8.1类型转换225
8.1.1标准类型之间的转换225
8.1.2类类型的转换226
8.2内置函数228
8.3异常处理232
8.4命令空间239
8.5程序陷阱242
习题8244参考文献246附录A常用C++编译器使用方法247