《计算机系列教材:C++程序设计(第2版)》系统介绍了C++程序设计。全书共分12章,主要内容包括类与对象、数据类型、预处理、数组、函数、指针、继承与派生、多态性与虚函数、运算符重载、输入输出流、模板与异常处理。
《计算机系列教材:C++程序设计(第2版)》内容取舍得当,例题丰富,概念清晰,既益于教学,也有利于加强学生上机实践能力的培养,提高教学效果。
《计算机系列教材:C++程序设计(第2版)》以Visual C++6.0为开发平台,书中所有实例都在此平台上通过。《计算机系列教材:C++程序设计(第2版)》配有《C++程序设计项目实践(第2版)》辅导教材,可以进一步强化学生的编程能力。
《计算机系列教材:C++程序设计(第2版)》可作为高等院校计算机专业教学及各类培训班的教材和参考书。
本书是笔者主持的山西省省级精品课程“C++程序设计”的建设成果。该书较全面、系统地讲述了C++的基本概念和编程方法,并用大量的实例让读者更好地掌握它们。本书的特点是:以应用为背景,以知识为主线,以提高能力和兴趣为目的,逐步形成以工程实践案例为教学主线、实践任务为教学驱动、在实践中融合理论学习的课程教学体系。把面向过程的内容自始至终贯穿到对象中讲解,把函数完全放入对象之中,使初学者始终使用对象进行程序设计。
本书重点训练学生编程的逻辑思路、算法,以及编程、调试的基本技术。因此,在本书的编写中,以任务驱动为前提,从提出问题入手,进行分析和算法设计,而不是一味地讲语法,以必需、够用为度,最后归纳总结,加强针对性和应用性。
全书共分为两篇。
第一篇为面向对象程序基础,包括第1~6章。
第1章介绍了面向对象程序设计的基本思想,以及C++程序的结构特征。
第2章给出了C++的数据描述。
第3章重点介绍了C++的基本结构和控制语句。
第4章介绍了数组的应用。
第5章介绍了面向对象的方法--函数。
第6章介绍了指针和引用的使用方法。
第二篇为面向对象程序设计,包括第7~12章。
第7章介绍了类与对象的定义及其构造函数与析构函数的使用。
第8章讲述了类的特性之一:继承与派生。
第9章讲述了类的特性之二:多态性与虚函数。
第10章介绍了运算符的重载。
第11章介绍了输入输出流。
第12章介绍了模板与异常处理。
本书第1、2章由叶瑶编写,第3~8章由刘宇君编写,第9~11章由曹党生编写,第12章由张焕梅编写,由刘宇君统编全书。 在本书的编写与出版过程中,得到了谭浩强教授的热情指导,得到了秦建中等的许多帮助,在此表示衷心的感谢。
由于编者水平有限,书中难免有疏漏和不足之处,恳请广大读者及专家批评指正。
本课程“C++程序设计”网址:http://210.31.100.100/c++jpkc/default.asp.
编者2011年8月26日
第一篇 面向对象程序基础
第1章 面向对象程序概述
1.1 程序设计方法的发展历程
1.1.1 面向过程的结构化程序设计方法
1.1.2 面向对象的方法
1.2 面向对象的基本思想
1.2.1 面向对象的开发方法
1.2.2 面向对象的基本概念
1.2.3 面向对象的软件工程
1.3 C++程序的特点
1.4 C++程序的结构特征
1.4.1 C++程序实例
1.4.2 C++程序的组成
1.4.3 C++程序的书写格式
1.5 C++程序的实现
1.6 本章小结
1.7 思考与练习
1.7.1 思考题
1.7.2 上机练习
第2章 对象属性的数据描述
2.1 C++的字符集
2.1.1 C++的字符集
2.1.2 C++的词法记号
2.2 数据类型
2.2.1 数据类型概述
2.2.2 基本数据类型
2.3 常量、变量
2.3.1 常量
2.3.2 变量
2.4 运算符与表达式的计算
2.4.1 算术运算符与算术表达式
2.4.2 赋值运算符与赋值表达式
2.4.3 逗号运算符与逗号表达式
2.4.4 关系运算符与关系表达式
2.4.5 条件运算符与条件表达式
2.4.6 逻辑运算符与逻辑表达式
2.5 表达式中数据类型的转换
2.5.1 数据类型的转换
2.5.2 赋值类型转换时的副作用
2.5.3 逻辑表达式优化时的副作用
2.6 本章总结
2.7 思考与练习
2.7.1 思考题
2.7.2 上机练习
第3章 预处理与语句
3.1 预处理
3.1.1 宏定义
3.1.2 文件包含
3.1.3 条件编译
3.2 程序的三种基本结构及流程图
3.2.1 C++语句概述
3.2.2 程序的三种基本结构
3.2.3 流程图
3.3 顺序结构及其语句实现
3.3.1 标准输出流对象cout
3.3.2 在输出流中使用控制符
3.3.3 标准输入流对象cin
3.3.4 赋值语句
3.4 分支结构及其语句实现
3.4.1 单分支结构及其语句实现
3.4.2 双分支结构及其语句实现
3.4.3 多分支结构及其语句实现
3.4.4 使用条件表达式实现分支结构
3.5 循环结构及其语句实现
3.5.1 for语句
3.5.2 while语句
3.5.3 do-while语句
3.5.4 循环嵌套及其语句实现
3.6 辅助控制语句
3.6.1 break语句
3.6.2 continue语句
3.7 程序实例
3.8 本章总结
3.9 思考与练习
3.9.1 思考题
3.9.2 上机练习
第4章 数组及应用
4.1 问题的提出
4.2 一维数组及应用
4.2.1 一维数组的定义
4.2.2 一维数组的初始化
4.2.3 一维数组的应用
4.3 二维数组及应用
4.3.1 二维数组和多维数组的定义
4.3.2 二维数组的初始化
4.3.3 二维数组的应用
4.4 字符数组与字符串
4.4.1 字符数组的定义
4.4.2 字符数组的初始化
4.4.3 字符串的输入输出
4.4.4 字符数组的应用
4.4.5 字符串处理函数
4.5 数组应用实例
4.5.1 数值计算
4.5.2 统计
4.5.3 排序
4.5.4 查找
4.6 本章总结
4.7 思考与练习
4.7.1 思考题
4.7.2 上机练习
第5章 对象的函数成员和全局函数
5.1 函数定义与调用语句
5.1.1 函数的分类
5.1.2 函数的定义
5.1.3 函数的返回值
5.1.4 函数的调用语句
5.1.5 函数原型的声明
5.2 函数调用的参数传递
5.2.1 函数的参数
5.2.2 函数参数的传递方式
5.3 函数的嵌套调用与递归调用
5.3.1 函数的嵌套调用
5.3.2 函数的递归调用
5.4 内联函数
5.5 函数重载
5.6 函数模板
5.7 具有默认参数值的函数
5.8 变量的存储属性
5.8.1 局部变量和全局变量
5.8.2 变量的存储类别
5.8.3 变量的存储属性
5.9 本章总结
5.10 思考与练习
5.10.1 思考题
5.10.2 上机练习
第6章 指针与引用
6.1 指针的概念
6.2 指针变量
6.2.1 指针变量的定义及其初始化
6.2.2 指针变量的运算符
6.2.3 指针的运算
6.3 指针与数组
6.3.1 指针与一维数组
6.3.2 指针与二维数组
6.3.3 指针与字符串
6.4 指针与函数
6.4.1 指针作为函数参数
6.4.2 返回指针的函数
6.4.3 函数指针
6.5 指针数组与二级指针
6.5.1 指针数组
6.5.2 二级指针
6.6 动态分配/释放内存
6.6.1 动态分配内存
6.6.2 动态释放内存
6.7 引用
6.7.1 引用类型变量的定义及使用
6.7.2 引用与函数
6.8 本章总结
6.9 思考与练习
6.9.1 思考题
6.9.2 上机练习
第二篇 面向对象程序设计
第7章 类与对象
7.1 类
7.1.1 类定义
7.1.2 成员函数的实现
7.2 对象
7.2.1 对象的定义
7.2.2 访问对象中的成员
7.2.3 类成员的访问属性
7.2.4 类的封装性和信息隐蔽
7.3 构造函数和析构函数
7.3.1 构造函数
7.3.2 带有成员初始化表的构造函数
7.3.3 析构函数
7.4 静态成员
7.4.1 静态数据成员
7.4.2 静态成员函数
7.5 友元
7.5.1 友元函数
7.5.2 友元类
7.6 本章总结
7.7 思考与练习
7.7.1 思考题
7.7.2 上机练习
第8章 继承与派生类
8.1 类的继承与派生
8.1.1 基类与派生类
8.1.2 派生类的定义
8.1.3 派生类的成员构成
8.2 继承方式与成员访问规则
8.2.1 公有继承方式
8.2.2 私有继承方式
8.2.3 保护继承方式
8.3 派生类的构造函数和析构函数
8.3.1 派生类的构造函数
8.3.2 派生类的析构函数
8.4 多继承
8.4.1 基类与派生类的关系
8.4.2 多继承的定义
8.4.3 多继承的构造函数
8.5 虚基类
8.5.1 为什么要引入虚基类--二义性问题
8.5.2 虚基类的引入
8.5.3 虚基类及其派生类的构造函数
8.6 综合实例
8.7 本章总结
8.8 思考与练习
8.8.1 思考题
8.8.2 上机练习
第9章 多态性与虚函数
9.1 多态性
9.1.1 多态的分类
9.1.2 多态性小结
9.2 虚函数
9.2.1 什么是虚函数
9.2.2 虚函数的定义和使用规则
9.3 纯虚函数和抽象类
9.3.1 为什么要设计纯虚函数
9.3.2 纯虚函数和抽象类
9.4 本章总结
9.5 思考与练习
9.5.1 思考题
9.5.2 上机练习
第10章 运算符重载
10.1 运算符重载
10.1.1 运算符重载的定义和规则
10.1.2 运算符重载示例
10.1.3 利用引用提高效率
10.1.4 赋值运算符的重载
10.2 几种特殊运算符重载
10.2.1 转换运算符的重载
10.2.2 ++、--运算符的重载
10.3 本章总结
10.4 思考与练习
10.4.1 思考题
10.4.2 上机练习
第11章 输入输出流
11.1 C++的输入输出
11.1.1 流
11.1.2 缓冲区
11.2 标准输入输出流
11.2.1 C++的基本流类体系
11.2.2 I/O标准流类
11.2.3 流的格式控制
11.2.4 流的状态
11.2.5 重载运算符>>和<<
11.3 串流类
11.4 文件流
11.4.1 文件流概述
11.4.2 文件的打开与关闭
11.4.3 文件的读写
11.4.4 文件缓冲区指针的使用
11.4.5 二进制文件的读写
11.5 本章总结
11.6 思考与练习
11.6.1 思考题
11.6.2 上机练习
第12章 模板与异常处理
12.1 模板
12.1.1 函数模板
12.1.2 类模板
12.2 异常处理
12.2.1 异常概述
12.2.2 异常处理机制
12.2.3 异常类
12.3 本章总结
12.4 思考与练习
12.4.1 思考题
12.4.2 上机练习
参考文献