本书紧扣C++编程语言的特点,从面向对象的基本概念和C++语言特性的多个方面逐一展开,由浅人深、循序渐进地介绍了C++浯言的基础知识和主要特征。
本书在注重系统性和科学性的同时,力求突出其实用性;在介绍相关的编程原理和基础知识的前提下,着重利用丰富实用的例子来演示C++编程技术的魅力。
本书内容丰富,结构合理,注重实用性,可用作普通高等院校计算机及相关专业的教材,也可作为广大计算机爱好者自学C++语言的参考书。
第1章C++语言概述
1.1程序
1.2程序设计方法
1.2.1结构化程序设计
1.2.2面向对象的程序
1.3C++语言的产生与发展
1.4C++程序开发过程
1.5简单的C++程序
习题1
第2章C++基础知识
2.1字符集和保留字
2.2基本数据类型
2.2.1变量和常量
2.2.2整型数据
2.2.3字符型数据
2.2.4实型数据
2.2.5枚举型数据
2.2.6字符串常量
2.3操作符和表达式
2.3.1概述
2.3.2常用操作符和表
2.3.3表达式的副作用
习题2
第3章语句和流程控制
3.2流程控制与程序结构
3.3分支选择结构
33.1if-else语句
33.2if语句的嵌套
33.3if多分支结构
3.3.4switch多分支结构
3.4循环结构
3.4.1while当型循环
3.4.2do-while直到型循环
3.4.3for循环
3.5转向控制语句
3.5.1break语句
3.5.2continue语句
3.6综合应用例子
习题3
第4章函数和作用域
4.1函数概述
4.2函数的定义和调用
4.2.1函数的定义
4.2.2函数的调用
4.3函数原型与头文件
4.4函数的值传递
4.5内联函数
4.6函数的重载
4.7函数和变量的作用域
4.7.1函数的作用域
4.7.2变量的作用域和生存其
4.8编译预处理
4.8.1文件包含指令#includ
4.8.2宏定义指令#define
4.8.3条件编译指令
习题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.5二维数组应用举例
5.6字符数组与字符串
5.6.1字符数组与字符串
5.6.2字符串的主要操作
习题5
第6章指针和引用
6.1指针的基本概念
6.2指针与数组
6.2.1--维数组的指针表示
6.2.2多维数组元素的指针表示
6.2.3字符指针与字符串
6.2.4指针数组与NULL指针
6.2.5命令行参数
63指针与函数
6.3.1指针参数
63.2返回指针的函数和vid指针
6.3.3函数指针
64弓I用
64.1引用类型变量的定义和使用
64.2引用和函数
65动态空间管理
6.5.1非数组动态空间
6.5.2数组动态空间
习题6
第7章面向对象程序设计基础
7.1C程序设计中的问题
7.2解决方案:面向对象的程序设计
7.3面向对象的关键概念
7.3.1对象
7.3.2类
7.3.3消息和方法
7.3.4封装性
7.35继承
7.3.6组合
7.3.7多态性
7.4面向对象分析和设计步骤
第8章类
8.1类的定义
8.2类与对象
8.3类的使用
8.4类的成员
8.5访问权限
8.6名字解析
8.7作用域运算符
8.8this指针
8.9const关键字
8.10类的作用域
8.11C++程序结构
习题8
第9章构造函数和析构函数
9.1构造函数
9.1.1默认构造函数
9.1.2带参数的构造函数
9.1.3重载构造函数
9.2析构函数
9.3成员初始化列表
9.4对象生命周期
9.5拷贝构造函数
9.6对象数组
习题9
第10章静态成员、友元和操作符重载
10.1静态成员
10.1.1静态数据成员
10.1.2静态成员函数
10.1.3静态成员函数和非静态成员函数的区5
10.2友元
10.2.1友元函数
10.2.2友元成员
10.2.3友元类
10.3运算符重载
10.31运算符重载的规则和特点
10.3.2女口何重载运算符
10.3.3类的成员函数重载运算符
10.3.4赋值运算符
10.3.5"++"和"一一"
10.3.6转换运算符
习题10
第11章继承
11.1继承的概念
11.2继承的工作方式
11.2.1公有继承
11.2.2保护继承
11.3再谈访问权限
11.4子类成员对基类成员的遮盖
11.5继承与组合
11.5.1继承
11.5.2组合
11.6综合实例分析
习题11
第12章虚拟函数与多态性
12.1指向基类的指针及引用
12.2虚拟函数与多态性
12.2.1虚拟函数
12.2.2多态性
12.3虚函数举例
12.4纯虚函数和抽象类
12.5纯虚函数举例
12.6向-上转型与虚函数
12.7虚析构函数
12.8综合实例
习题12
第13章C++I/O流介绍
13.1C++流的概念
13.1.1C++流体系结构
13.1.2预定义流对象
13.1.3预定义的提取操作符">>"和插入操作符"《"
13.1.4重载提取操作符和插入操作符
13.2格式化输入输出
13.2.1格式化输入输出的数制状态控制
13.2.2输人输出的宽度控制
13.2.3输人输出的精度控制
13.2.4浮点数输出方式控制
13.2.5小数点处理方式
13.2.6非负数的符号表示方式
13.2.7对齐方式控制
13.2.8填充字符
13.2.9插入换行符
13.3文件操作
13.3.1文件概念
13.3.2文件流对象的建立
13.3.3文件流状态的判定
13.3.4文本文件的访问操作
13.3.5二进制文件的访问操作
13.4字符串流
习题13
第14章模板
14.1模板函数
14.2模板函数参数依赖于元素类型
14.3多个元素类型的模板函数
14.4模板类
14.5各种模板类元素类型
14.6标准模板库--STL
14.6.1容器
14.6.2迭代量
14.6.3算法
习题14
从20世纪?0年代第一次提出面向对象的概念开始,到现在面向对象已发展成为一种比较成熟的编程思想。通过面向对象思想,可以将现实世界直接映射到面向对象解空间,从而为系统的设计和开发带来革命性的影响。
C++语言是目前为止功能最强大、最受欢迎、应用最广泛的面向对象程序设计语言,它是在C语言的基础上发展起来的。相对于其他计算机语言,学习并掌握C++语言具有一定的难度,但当你能够熟练掌握和驾驭该语言的时候,你将几乎无所不能,因此熟练掌握C++几乎是每一个程序员所梦寐以求的事。
C++是一种面向对象的程序设计语言,要真正学好C++,首先必须掌握面向对象思想的精髓。基于这一点,本书围绕面向对象的思想及其在C++中的应用而展开,着重介绍C++的语言基础,力求使读者在学习C++的过程中逐步掌握面向对象的思想和方法,为以后进一步学习C++打下良好的基础。
本书的叙述浅显易懂,循序渐进,即使是没有编程经验的新手,通过本书的阅读也可以较快地掌握C++编程技术,并将本书介绍的大量实例应用到实际开发中。本书中没有复杂难懂的术语,所有的专业术语将结合大部分读者可以理解的实际生活例子进行解释。在介绍最新的知识及技术动向时,用大量的程序实例加以讲解,便于读者理解和巩固所学的知识。
全书共有14章,可分为两个部分。第一部分(1—6章)为C++语言的基础部分。该部分没有有关面向对象方面的内容,与C++的前身——C语言有许多类似之处。对于有C语言基础的读者,这部分可只学习第1章、第4章的内联函数和函数重载、第6章的动态空间管理,其他内容则可跳过。第二部分(?一“章)介绍了面向对象的理论基础及其特点。通过这部分的学习,读者可以了解并掌握面向对象的基本概念、面向对象的三大特点以及C++语言在面向对象上的特点和应用。
第1章为C++’语言的概述;第2章介绍了保留字、基本数据类型、操作符和表达式等C++的基础知识;第3章介绍了分支选择结构语句和循环结构语句等C++的流程控制语句;第4章介绍了函数的定义和调用、内联函数、函数重载、作用域和编译预处理等方面的知识,该章是全书的重点之一;第5章介绍了一维数组、多维数组和字符数组的定义及应用;第6章介绍了指针的概念、指针和数组的关系、指针和函数的关系、new和delet:运算符、引用的定义以及引用在函数中的应用,这是全书的难点之一;第7章介绍了面向对象的关键概念以及面向对象的分析和设计步骤;第8章介绍了类的概念及其使用、访问权限和this指针等;第9章介绍了构造函数、析构函数、成员初始化列表和拷贝构造函数等知识,这是全书的重点之二;第10章介绍了静态成员、友元和运算符重载等C++的重要特性;第1l章介绍了继承的概念、继承的工作方式、继承的访问权限以及继承所带来的冲突等,继承在面向对象技术中起着举足轻重的作用;第12章介绍了指向基类的指针及引用、虚拟函数与多态性以及纯虚函数和抽象类等,这章是全书的重点之三;第13章介绍了流的概念、格式化输入输出、文件操作和字符串流等C++I/O流的知识;第14章简单介绍了模板函数、模板类的定义和应用以及STL的基本组成部分。
只有通过大量的上机编程、调试才能真正掌握一门语言,因此本书通过例子结合重点知识进行讲解,并在每章的后面提供了习题供读者上机练习,突出了实用性。本书中的例题都在VisualC++6.0上调试通过。
本书由袁启昌教授主编,袁海宁、华飞君编著。虽然本书作者在写作过程中尽了最大努力,但由于时间和水平有限,书中难免有疏漏错误之处,敬请广大读者不吝赐教。
作 者
2004年5月