图书目录

第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内置函数24

1.3.9作用域运算符25

1.3.10字符串变量26

1.3.11动态分配/撤销内存的运算符new和delete29

1.3.12C++对C功能扩展的小结30

1.4C++程序的编写和实现31

1.5关于C++上机实践32

习题33

第2章类和对象的特性36

2.1面向对象程序设计方法概述36

2.1.1什么是面向对象的程序设计36

2.1.2面向对象程序设计的特点39

2.1.3类和对象的作用40

2.1.4面向对象的软件开发41

2.2类的声明和对象的定义43

2.2.1类和对象的关系432.2.2声明类的类型43

2.2.3定义对象的方法45

2.2.4类和结构体类型的异同47

2.3类的成员函数48

2.3.1成员函数的性质48

2.3.2在类外定义成员函数48

2.3.3内置成员函数(inline成员函数)49

2.3.4成员函数的存储方式51

2.4对象成员的引用52

2.4.1通过对象名和成员运算符访问对象中的成员53

2.4.2通过指向对象的指针访问对象中的成员53

2.4.3通过对象的引用来访问对象中的成员54

2.5类和对象的简单应用举例54

2.6类的封装性和信息隐蔽61

2.6.1公用接口与私有实现的分离61

2.6.2类声明和成员函数定义的分离62

2.6.3面向对象程序设计中的几个名词65

习题66

第3章怎样使用类和对象68

3.1利用构造函数对类对象进行初始化68

3.1.1对象的初始化68

3.1.2用构造函数实现数据成员的初始化69

3.1.3带参数的构造函数71

3.1.4用参数初始化表对数据成员初始化73

3.1.5构造函数的重载74

3.1.6使用默认参数的构造函数76

3.2利用析构函数进行清理工作79

3.3调用构造函数和析构函数的顺序81

3.4对象数组83

3.5对象指针85

3.5.1指向对象的指针85

3.5.2指向对象成员的指针85

3.5.3指向当前对象的this指针88

3.6共用数据的保护90

3.6.1常对象90

3.6.2常对象成员91

3.6.3指向对象的常指针93

3.6.4指向常对象的指针变量93

3.6.5对象的常引用96

3.6.6const型数据的小结97

3.7对象的动态建立和释放98

3.8对象的赋值和复制99

3.8.1对象的赋值99

3.8.2对象的复制101

3.9静态成员103

3.9.1静态数据成员104

3.9.2静态成员函数106

3.10友元109

3.10.1友元函数109

3.10.2友元类113

3.11类模板114

习题118

第4章对运算符进行重载122

4.1为什么要对运算符重载122

4.2对运算符重载的方法124

4.3重载运算符的规则127

4.4运算符重载函数作为类成员函数和友元函数128

4.5重载双目运算符132

4.6重载单目运算符137

4.7重载流插入运算符和流提取运算符139

4.7.1重载流插入运算符“<<”140

4.7.2重载流提取运算符“>>”142

4.8有关运算符重载的归纳144

4.9不同类型数据间的转换145

4.9.1标准类型数据间的转换145

4.9.2用转换构造函数进行不同类型数据的转换145

4.9.3类型转换函数147

习题153

第5章继承与派生154

5.1什么是继承与派生154

5.2派生类的声明方式157

5.3派生类的构成157

5.4派生类成员的访问属性159

5.4.1公用继承160

5.4.2私有继承162

5.4.3保护成员和保护继承165

5.4.4多级派生时的访问属性169

5.5派生类的构造函数和析构函数170

5.5.1简单的派生类的构造函数171

5.5.2有子对象的派生类的构造函数174

5.5.3多层派生时的构造函数177

5.5.4派生类构造函数的特殊形式179

5.5.5派生类的析构函数180

5.6多重继承180

5.6.1声明多重继承的方法181

5.6.2多重继承派生类的构造函数181

5.6.3多重继承引起的二义性问题184

5.6.4虚基类187

5.7基类与派生类的转换192

5.8继承与组合195

5.9继承在软件开发中的重要意义197

习题198

第6章多态性与虚函数203

6.1什么是多态性203

6.2一个典型的例子204

6.3利用虚函数实现动态多态性209

6.3.1虚函数的作用209

6.3.2静态关联与动态关联213

6.3.3在什么情况下应当声明虚函数215

6.3.4虚析构函数215

6.4纯虚函数与抽象类217

6.4.1纯虚函数217

6.4.2抽象类217

6.4.3应用实例218

习题225

第7章输入输出流226

7.1C++的输入和输出226

7.1.1输入输出的含义226

7.1.2C++的I/O对C的发展——类型安全和可扩展性226

7.1.3C++的输入输出流227

7.2标准输出流232

7.2.1cout,cerr和clog流232

7.2.2标准类型数据的格式输出234

7.2.3用流成员函数put输出字符239

7.3标准输入流240

7.3.1cin流240

7.3.2用于字符输入的流成员函数242

7.3.3istream类的其他成员函数245

7.4对数据文件的操作与文件流249

7.4.1文件的概念249

7.4.2文件流类与文件流对象250

7.4.3文件的打开与关闭251

7.4.4对ASCII文件的操作253

7.4.5对二进制文件的操作258

7.5字符串流264

习题268

第8章C++工具270

8.1异常处理270

8.1.1异常处理的任务270

8.1.2异常处理的方法271

8.1.3在函数声明中进行异常情况指定278

8.1.4在异常处理中处理析构函数279

8.2命名空间281

8.2.1为什么需要命名空间281

8.2.2什么是命名空间284

8.2.3使用命名空间解决名字冲突286

8.2.4使用命名空间成员的方法288

8.2.5无名的命名空间290

8.2.6标准命名空间std290

8.3使用早期的函数库291

习题292

附录A常用字符与ASCII代码对照表294

附录B运算符和结合性295

参考文献297

第14章实验安排220

14.1实验1C程序的运行环境和运行C程序的方法220

14.2实验2最简单的C程序设计——顺序程序设计222

14.3实验3选择结构程序设计224

14.4实验4循环结构程序设计225

14.5实验5利用数组(一)226

14.6实验6利用数组(二)227

14.7实验7函数调用(一)228

14.8实验8函数调用(二)229

14.9实验9善用指针(一)230

14.10实验10善用指针(二)231

14.11实验11使用结构体232

14.12实验12文件操作233

参考文献234