第1章C++的初步知识1
1.1从C到C++1
1.2最简单的C++程序2
1.3C++对C的扩充8
1.3.1C++的输入输出8
1.3.2用const定义常变量11
1.3.3函数原型声明11
1.3.4函数的重载12
1.3.5函数模块14
1.3.6有默认参数的函数16
1.3.7变量的引用17
1.3.8内置函数23
1.3.9作用域运算符25
1.3.10字符串变量26
1.3.11动态分配/撤销内存的运算符new和delete29
1.3.12小结30
1.4C++程序的编写和实现31
1.5关于C++上机实践33
习题33
第2章类和对象37
2.1面向对象程序设计方法概述37
2.1.1什么是面向对象的程序设计37
2.1.2面向对象程序设计的特点40
2.1.3类和对象的作用41
2.1.4面向对象的软件开发42
2.2类的声明和对象的定义44
2.2.1类和对象的关系44
2.2.2声明类类型44
2.2.3定义对象的方法46
2.2.4类和结构体类型的异同48
2.3类的成员函数49
2.3.1成员函数的性质49
2.3.2在类外定义成员函数50
2.3.3inline成员函数51
2.3.4成员函数的存储方式52
2.4对象成员的引用54
2.4.1通过对象名和成员运算符访问对象中的成员54
2.4.2通过指向对象的指针访问对象中的成员55
2.4.3通过对象的引用来访问对象中的成员55
2.5类和对象的简单应用举例55
2.6类的封装性和信息隐蔽62
2.6.1公用接口与私有实现的分离62
2.6.2类声明和成员函数定义的分离64
2.6.3面向对象程序设计中的几个名词66
习题67
C++面向对象程序设计目录第3章关于类和对象的进一步讨论69
3.1构造函数69
3.1.1对象的初始化69
3.1.2构造函数的作用70
3.1.3带参数的构造函数72
3.1.4用参数初始化表对数据成员初始化73
3.1.5构造函数的重载73
3.1.6使用默认参数的构造函数75
3.2析构函数78
3.3调用构造函数和析构函数的顺序80
3.4对象数组81
3.5对象指针83
3.5.1指向对象的指针83
3.5.2指向对象成员的指针84
3.5.3this指针87
3.6共用数据的保护88
3.6.1常对象89
3.6.2常对象成员90
3.6.3指向对象的常指针91
3.6.4指向常对象的指针变量91
3.6.5对象的常引用95
3.6.6const型数据的小结96
3.7对象的动态建立和释放96
3.8对象的赋值和复制97
3.8.1对象的赋值97
3.8.2对象的复制99
3.9静态成员101
3.9.1静态数据成员102
3.9.2静态成员函数104
3.10友元107
3.10.1友元函数107
3.10.2友元类111
3.11类模板112
习题116
第4章运算符重载120
4.1什么是运算符重载120
4.2运算符重载的方法122
4.3重载运算符的规则124
4.4运算符重载函数作为类成员函数和友元函数127
4.5重载双目运算符129
4.6重载单目运算符134
4.7重载流插入运算符和流提取运算符137
4.7.1重载流插入运算符“<<”137
4.7.2重载流提取运算符“>>”139
4.8不同类型数据间的转换141
4.8.1标准类型数据间的转换141
4.8.2转换构造函数142
4.8.3类型转换函数144
习题149
第5章继承与派生150
5.1继承与派生的概念150
5.2派生类的声明方式153
5.3派生类的构成154
5.4派生类成员的访问属性155
5.4.1公用继承156
5.4.2私有继承158
5.4.3保护成员和保护继承161
5.4.4多级派生时的访问属性164
5.5派生类的构造函数和析构函数166
5.5.1简单的派生类的构造函数166
5.5.2有子对象的派生类的构造函数169
5.5.3多层派生时的构造函数172
5.5.4派生类构造函数的特殊形式175
5.5.5派生类的析构函数175
5.6多重继承176
5.6.1声明多重继承的方法176
5.6.2多重继承派生类的构造函数176
5.6.3多重继承引起的二义性问题179
5.6.4虚基类182
5.7基类与派生类的转换187
5.8继承与组合191
5.9继承在软件开发中的重要意义192
习题193
第6章多态性与虚函数198
6.1多态性的概念198
6.2一个典型的例子199
6.3虚函数204
6.3.1虚函数的作用204
6.3.2静态关联与动态关联208
6.3.3在什么情况下应当声明虚函数209
6.3.4虚析构函数210
6.4纯虚函数与抽象类211
6.4.1纯虚函数211
6.4.2抽象类212
6.4.3应用实例213
习题219
第7章输入输出流220
7.1C++的输入和输出220
7.1.1输入输出的含义220
7.1.2C++的I/O对C的发展——类型安全和
可扩展性220
7.1.3C++的输入输出流221
7.2标准输出流225
7.2.1cout,cerr和clog流225
7.2.2格式输出228
7.2.3用流成员函数put输出字符232
7.3标准输入流233
7.3.1cin流233
7.3.2用于字符输入的流成员函数235
7.3.3istream类的其他成员函数239
7.4文件操作与文件流242
7.4.1文件的概念242
7.4.2文件流类与文件流对象243
7.4.3文件的打开与关闭244
7.4.4对ASCII文件的操作246
7.4.5对二进制文件的操作251
7.5字符串流256
习题261
第8章C++工具262
8.1异常处理262
8.1.1异常处理的任务262
8.1.2异常处理的方法263
8.1.3在函数声明中进行异常情况指定270
8.1.4在异常处理中处理析构函数270
8.2命名空间272
8.2.1为什么需要命名空间273
8.2.2什么是命名空间276
8.2.3使用命名空间解决名字冲突278
8.2.4使用命名空间成员的方法280
8.2.5无名的命名空间282
8.2.6标准命名空间std282
8.3使用早期的函数库283
习题284
附录A常用字符与ASCII代码对照表286附录B运算符与结合性287参考文献289