C++语言是在C语言的基础上发展起来的面向对象程序设计语言,它不仅可以编写应用软件,而且特别适合于编写系统软件。本书共由10章组成,按照循序渐进的原则,逐步而系统地介绍C++语言的基本概念和语法规则,特别是用了大量的篇幅来详细讲解面向对象程序设计的基本概念,包括类、继承、多态和重载等,并利用单独的一章来专门介绍类的设计,使读者在学完本书后,能尽快应用C++语言来解决实际问题。本书是作者根据多年的C++语言教学经验和实践体会编写而成的,在内容编排上尽量体现易学的特点,在文字叙述上力求条理清晰、简洁,便于读者阅读。
本书可以作为大专院校计算机专业或非计算机专业教材及教学参考书,也可作为自学用书。
随着计算机技术的不断发展以及软件程序的高度复杂化,面向对象程序设计的重要性也越来越突现出来,而C++语言则是面向对象程序设计的最重要的代表性语言之一。
C++语言是在被广泛应用的C语言的基础上发展起来的。C++语言是在C语言已有的功能的基础上,强化了C语言的基本功能,特别是增加了对类的处理能力,即:
C++=C+基本功能的扩充+类的功能
从这一公式不难看出,C++语言几乎完全继承了C语言的所有功能。从表面上看来,由于C++语言继承了C语言的所有功能,因此,只要学会了C语言,就应该很容易学会C++语言,其实不然。就类本身来讲,就包含很多复杂的概念,而对于这些概念的正确理解则是学好面向对象程序设计语言的关键,同时,C语言是面向函数的程序设计语言,而C++语言则是面向对象的程序设计语言,这样,在程序设计方法上也有很大差别。
本书是在多年讲授的C++语言教案的基础上,广泛听取读者和同行的建议,并参考最新材料经系统整理而成的。尽管大部分读者可能都学过C语言,但考虑到C++语言作为一门独立的课程应具有其系统性,因此本书系统地介绍了C++语言的各种语法成分和程序设计特点,在内容编排上,按照循序渐进的原则,逐步介绍了C++语言的基本概念和理论,在内容的安排上,尽可能考虑读者的接受能力,使整个学习过程按照从简单到复杂的顺序进行。为了使读者能够尽快利用C++语言来解决实际问题,本书的每一章都给出了大量的例题,这些例题对于理解C++语言的语法现象、完整掌握C++语言的特点非常有益。同时,考虑到面向对象程序设计语言的特点,第8章专门介绍类的设计,所给出的几个例子都是具有代表性的并具有实用价值的,通过对这些实例的学习,能够帮助读者进一步掌握面向对象程序设计的要点,并能达到举一反三的目的。
本书共由10章组成,按照循序渐进的原则,逐步介绍C++语言的基本概念和语法规则,特别是用了大量的篇幅来详细讲解面向对象程序设计的基本概念,包括类、继承、多态和重载等。书中的所有例题都在Visual C++环境下测试完成。每章的最后也都附有一定量的习题,这些习题对于读者巩固已学的内容大有益处。
作者认为,要学好C++语言,除了掌握C++语言的基本理论之外,还必须要加强实践环节,读者可以边学习边上机,刚开始时可以调试本书中的例题,待学习一段时间之后,就可以调试自己编写的程序了,只有这样,才能加快学习进度,提高学习效率。
由于作者水平有限,经验不足,书中一定有不少疏漏和不足,敬请有关老师、计算机工作者和广大读者批评指正。
作者2015年10月于大连理工大学
第1章绪言
1.1面向对象程序设计的特点
1.2C++语言程序的开发过程
1.3C++语言程序的结构
习题
第2章数据类型、运算符和基本语句
2.1基本概念
2.1.1标识符
2.1.2常量
2.1.3变量
2.1.4关键字
2.2基本数据类型
2.2.1整型变量及其常量
2.2.2浮点型变量及其常量
2.2.3字符型变量及其常量
2.2.4void型数据
2.2.5bool型变量及其常量
2.3long、short、signed、unsigned关键字
2.3.1long和short关键字
2.3.2signed和unsigned关键字
2.4枚举
2.5const关键字
2.6volatile关键字
2.7typedef关键字
2.8不同类型数据之间的转换
2.8.1自动类型转换
2.8.2强制类型转换
2.9运算符
2.9.1算术运算符
2.9.2增1、减1运算符
2.9.3关系运算符
2.9.4逻辑运算符
2.9.5位运算符
2.9.6赋值运算符
2.9.7条件运算符
2.9.8逗号运算符
2.9.9sizeof运算符
2.9.10指针运算符
2.9.11成员访问运算符
2.10基本语句
2.10.1语句、复合语句和空语句
2.10.2if语句
2.10.3switch语句
2.10.4while语句
2.10.5for语句
2.10.6dowhile语句
2.10.7break语句
2.10.8continue语句
2.10.9goto语句
2.10.10return语句
习题
第3章数据的输入和输出
3.1标准输入和输出
3.1.1基于运算符<<和>>的输入输出
3.1.2字符的输入get( )和输出put( )
3.1.3字符串的输入get( )和getline( )
3.2文件
3.2.1文件的打开和关闭
3.2.2文件的输入和输出
3.2.3错误处理
习题
第4章数组、指针和引用
4.1数组
4.1.1一维数组
4.1.2二维数组
4.1.3字符数组和字符串
4.2指针
4.2.1指针的基本概念
4.2.2void型指针
4.2.3二级指针
4.2.4指针和数组
4.3引用
4.4内存的申请与释放
习题
第5章函数
5.1函数的定义和调用
5.2函数的返回值及其类型
5.2.1函数返回值
5.2.2函数返回指针
5.2.3函数返回引用
5.3函数原型
5.4函数的参数及其传递方式
5.4.1将值传递给函数
5.4.2将常量传递给函数
5.4.3将指针传递给函数
5.4.4将引用传递给函数
5.4.5将数组传递给函数
5.5函数的递归调用
5.6变量的作用域和存储类
5.6.1变量的作用域
5.6.2变量的存储类
5.7无参函数和默认参数
5.8函数的重载
5.9inline函数
5.10外部函数和静态函数
习题
第6章类
6.1类的定义
6.2公共、私有和保护
6.3数据成员和成员函数
6.3.1成员函数的使用
6.3.2成员函数的内部定义和外部定义
6.3.3数据成员的保护
6.4构造函数和析构函数
6.4.1构造函数
6.4.2析构函数
6.5复制构造函数
6.5.1复制构造函数的说明和定义
6.5.2默认复制构造函数
6.5.3复制构造函数的进一步说明
6.6变换构造函数和变换函数
6.6.1变换构造函数
6.6.2变换函数
6.7静态数据成员和静态成员函数
6.8this指针
6.9友元
6.9.1友元函数
6.9.2友元类
6.10运算符的重载
6.10.1operator函数的功能
6.10.2operator函数的重载
6.10.3类的友元是operator函数
6.10.4几个典型的例子
6.11const对象
6.12类的嵌套定义
6.13类的数据成员是类对象或常量
6.13.1类的数据成员是类对象
6.13.2类的数据成员是常量
6.14对象数组
6.15指向类的成员的指针
6.15.1指向类的非静态成员的指针
6.15.2指向类的静态成员的指针
6.16结构
6.17联合
6.18位段
习题
第7章继承
7.1基类和派生类
7.2虚函数和多态
7.2.1静态结合和动态结合
7.2.2虚函数
7.3纯虚函数和抽象类
7.3.1纯虚函数
7.3.2抽象类
7.4虚析构函数
7.5继承的种类
7.5.1多重继承
7.5.2直接继承和间接继承
7.6多重基类和虚拟基类
7.7继承方式下的构造与析构
7.8C++语言特有的强制类型转换运算符
7.8.1dynamic_cast运算符
7.8.2static_cast运算符
7.8.3const_cast运算符
7.8.4reinterpret_cast运算符
7.9explicit关键字
7.10typeid运算符
习题
第8章类的设计
8.1计数器类的设计
8.2字符串类的设计
8.3链表类的设计
8.4堆栈类的设计
8.5数组类的设计
8.6用于实现多态性的例子
习题
第9章模板和异常处理
9.1模板
9.1.1函数模板
9.1.2类模板
9.1.3STL简介
9.2异常处理
9.2.1try关键字的使用
9.2.2throw关键字的使用
9.2.3catch关键字的使用
9.2.4异常处理对象
9.2.5异常处理中的构造与析构
习题
第10章编译预处理
10.1宏定义
10.2文件包括
10.3条件编译
10.4其他
习题