C++程序设计教程 第3版
作者 : 王珊珊 臧洌 张志航 编著
出版日期 : 2016-12-05
ISBN : 978-7-111-55253-6
适用人群 : 高校理工科相关专业本科生
定价 : 49.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 387
开本 : 16
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书包括两部分内容。第一部分为第1~9章,以C语言为起点讲述面向过程的程序设计,适用于程序设计语言的初学者。第二部分为第10~15章,讲述面向对象的程序设计的基本概念。学好面向对象C++的基本概念,可以为您今后学习以面向对象为基础的通用软件开发工具如Visual C++、Delhpi和C#.net等打下坚实的基础。

图书特色

本书作者具有二十多年C/C++程序设计语言教学经验,于2005年和2011年分别出版了本书第1版和第2版,被国内十几所高校和培训机构使用,并取得了良好的反响。在前两版的基础上,本书第3版修正了部分不足,文字描述更准确,对全部源程序编辑格式做了调整(即采用C++标准命名空间的方式编写程序,符合C++11标准)。
本书特色:
读者对象广泛。本书通俗易懂,适用于大学本科理工类各专业的学生,也适用于自学C++语言的读者。
内容编排合理。本书首先讲授面向过程的程序设计,然后讲解面向对象的程序设计,内容由浅入深,适合于程序设计语言的初学者。
注重算法训练。本书例题和习题丰富,基本涵盖程序设计语言课程的各类算法。读者编程时可参照例题进行,有章可循。
教学资源丰富。本书配套有全部例题的源代码、全部习题及解答、VS 2013集成环境的简单使用说明、各章教学用的PowerPoint讲稿,选用本教材的教师可通过华章网站(www.hzbook.com)获取教学资料。

图书前言

编写背景
各大专院校工科类专业开设了程序设计语言类课程,尤其是电类专业普遍开设了C++程序设计课程,因此需要一本适用于初学者的教材。本书就是为了满足这个层次的读者需求而编写的。本书包含两个方面的内容:1)面向过程的程序设计,目的是让初学者掌握基本的程序设计知识。2)面向对象的程序设计,让初学者了解面向对象程序设计的基本概念,为今后学习以面向对象为基础的通用软件开发工具如Microsoft Visual C++、Delphi、C#.net和Visual Studio等打下坚实的基础。
2005年和2011年本教材分别出版了第1版和第2版,被国内十几所高校和培训机构所使用,并取得了良好的反响。本书在前两版的基础上,修正了部分不足,文字描述更准确;程序在Visual Studio 2013环境中运行,尽量做到符合C++11新标准,并对C++11新标准进行了一定的解释;对源程序例子进行了少量增删,并对源程序编辑格式做了调整,即采用C++标准命名空间的方式编写程序。调整前和调整后源程序书写格式如下:
#include   //调整前程序书写格式,使用带.h的头文件
#include
void main()      //主函数无返回值
{
  //…语句
}
#include   //调整后程序书写格式,使用不带.h的头文件
#include
using namespace std;  //使用C++标准命名空间
int main()      //主函数的返回值类型为int
{
  //…语句
  return 0;
}
编写内容和教学要求
本书分两部分,第一部分包括第1~9章,结合C++语言的基本语法,介绍传统的面向过程的程序设计,内容包括C++语言基本数据类型、基本运算、基本输入输出、结构化流程控制语句、函数、编译预处理、数组、结构体、指针和链表等,基本上是传统的C程序设计语言的内容。第二部分包括第10~15章,以面向对象的三大特点为主线,讲述类和对象的基本概念,类的封装、继承和多态,以及函数模板和类模板,并讲述了输入输出流类体系、文件操作等内容。
本书作者的教学理念是注重程序设计算法的教学,注重对学生算法思路的逻辑训练,而不拘泥于语法要素的细枝末节。本书通俗易懂,配有大量针对各章的教学难点和重点以及各种算法而设计的例题和习题。在选择例题和习题时,尽量涵盖目前程序设计语言课程的各类算法。初学者阅读习题时,能够在教材的例题中找到相似的例子进行模仿,这样对初学者来说解题就不是一件非常困难的事情。除了进行理论教学和上机练习外,教师还可以根据实际情况选用适合不同层次学生的课程设计题目,以加强学生动手编制较大规模程序的能力。
本书第1、2、9~14章由王珊珊老师编写,第5~8章由臧洌老师编写,第3、4、15章由张志航老师编写,全书由王珊珊负责统稿。
本书的实验环境是Visual Studio 2013,书中全部的例题和习题均在该环境中通过编译和运行。
本书配套的上机实验和课程设计教材为《C++语言程序设计上机实验及学习指导》,王珊珊、臧洌和张志航编著,2016年1月由南京大学出版社出版。
本书可能会存在疏漏、不妥和错误之处,恳请专家和广大读者指教和商榷。
作者联系方式:
shshwang@nuaa.edu.cn(王珊珊)
zangliwen@nuaa.edu.cn(臧洌)
zzh20100118@qq.com(张志航)

作者
2016年8月20日
于南京航空航天大学

上架指导

计算机\程序设计

封底文字

本书作者具有二十多年C/C++程序设计语言教学经验,于2005年和2011年分别出版了本书第1版和第2版,被国内十几所高校和培训机构使用,并取得了良好的反响。在前两版的基础上,本书第3版修正了部分不足,文字描述更准确,对全部源程序编辑格式做了调整(即采用C++标准命名空间的方式编写程序,符合C++11标准)。
本书特色:

1.读者对象广泛。本书通俗易懂,适用于大学本科理工类各专业的学生,也适用于自学C++语言的读者。
2.内容编排合理。本书首先讲授面向过程的程序设计,然后讲解面向对象的程序设计,内容由浅入深,适合于程序设计语言的初学者。
3.注重算法训练。本书例题和习题丰富,基本涵盖程序设计语言课程的各类算法。读者编程时可参照例题进行,有章可循。
4.教学资源丰富。本书配套有全部例题的源代码、全部习题的解答、VS 2013集成环境的简单使用说明、各章教学用的PowerPoint讲稿,选用本教材的教师可通过华章网站(www.hzbook.com)获取教学资料。

图书目录

前言
教学建议
第1章 C++概述1
1.1 计算机语言与程序1
1.1.1 机器语言与程序1
1.1.2 汇编语言与程序1
1.1.3 高级语言与程序2
1.2 从C到C++2
1.3 程序设计方法3
1.3.1 结构化程序设计方法3
1.3.2 面向对象程序设计方法3
1.4 简单的C++程序介绍4
1.5 程序开发步骤6
第2章 数据类型、运算符和表达式7
2.1 保留字和标识符7
2.1.1 保留字7
2.1.2 标识符7
2.2 C++的基本数据类型8
2.3 常量和变量9
2.3.1 常量9
2.3.2 符号常量11
2.3.3 变量12
2.4 基本运算符和表达式13
2.4.1 C++运算符及表达式简介13
2.4.2 算术运算符和算术表达式14
2.4.3 运算优先级和结合性14
2.4.4 关系运算符和关系表达式14
2.4.5 逻辑运算符和逻辑表达式15
2.4.6 位运算符和位运算表达式15
2.4.7 自增、自减运算符和表达式17
2.4.8 赋值运算符和赋值表达式18
2.4.9 逗号运算符和逗号表达式18
2.4.10 sizeof 运算符和表达式19
2.4.11 逻辑运算优化的副作用19
2.5 类型转换19
2.5.1 赋值时的自动类型转换19
2.5.2 各种类型运算量混合运算时的自动类型转换21
2.5.3 强制类型转换21
第3章 简单的输入输出23
3.1 传统的输入输出函数实现方法23
3.2 cout输出流24
3.2.1 输出八进制数、十六进制数和用科学记数法表示的数27
3.2.2 输出字符或字符串28
3.3 cin输入流29
3.3.1 输入十六进制或者八进制数据31
3.3.2 输入字符数据32
3.4 总结34
第4章 C++的流程控制35
4.1 算法概述35
4.1.1 算法的作用和类别35
4.1.2 算法的设计原则36
4.1.3 算法的表示工具36
4.1.4 结构化程序设计中基本结构的表示38
4.2 C++程序的结构和语句40
4.3 选择结构语句的使用42
4.3.1 if语句42
4.3.2 if语句的嵌套使用45
4.3.3 条件运算符46
4.3.4 switch语句47
4.4 循环结构语句的使用51
4.4.1 goto语句及标号的使用51
4.4.2 while语句52
4.4.3 for语句53
4.4.4 do…while语句54
4.4.5 break语句和continue语句55
4.4.6 循环的嵌套57
4.5 控制语句的应用举例58
第5章 函数64
5.1 概述64
5.2 函数的定义64
5.3 函数的调用66
5.3.1 函数的原型声明67
5.3.2 函数的传值调用67
5.3.3 函数的引用调用69
5.3.4 函数的嵌套调用70
5.3.5 函数的递归调用74
5.4 函数的参数77
5.4.1 函数实参的求值顺序77
5.4.2 函数形参的默认值78
5.5 内联函数79
5.6 函数重载80
5.6.1 参数类型不同的重载函数80
5.6.2 参数个数不同的重载函数81
5.7 使用C++系统函数81
5.8 作用域和存储类别82
5.8.1 作用域83
5.8.2 存储类别86
5.8.3 全局变量的作用域的扩展和限制89
5.9 程序的多文件组织91
5.9.1 内部函数和外部函数91
5.9.2 多文件组织的编译和连接93
第6章 编译预处理94
6.1 宏定义94
6.1.1 不带参数的宏定义94
6.1.2 带参数的宏定义96
6.2 “文件包含”处理98
*6.3 条件编译99
第7章 数组102
7.1 数组的定义及应用102
7.1.1 一维数组的定义及使用102
7.1.2 一维数组作为函数参数105
7.1.3多维数组的定义及使用115
7.1.4 二维数组作为函数参数117
7.2 字符数组的定义及应用121
7.2.1 字符数组的定义121
7.2.2 字符数组的初始化122
7.2.3 字符数组的使用122
7.2.4 字符串和字符串结束标志123
7.2.5 字符数组的输入输出124
7.2.6 字符串处理函数125
7.2.7 字符数组应用举例128
第8章 结构体、共用体和枚举类型131
8.1 结构体的定义及应用131
8.1.1 结构体类型的定义131
8.1.2 结构体类型变量的定义132
8.1.3 结构体类型变量及其成员的引用133
8.1.4 结构体数组136
8.2 共用体的定义及应用139
8.2.1 共用体类型及其变量的定义139
8.2.2 共用体类型变量的引用140
8.2.3 共用体数据类型的特点140
8.3 枚举类型的定义及应用141
8.3.1 枚举类型的定义142
8.3.2 枚举类型变量的定义142
8.3.3 枚举类型变量的使用142
第9章 指针、引用和链表145
9.1 指针和指针变量145
9.1.1 指针的概念145
9.1.2 指针变量的定义145
9.1.3 有关指针的运算符&和*146
9.1.4 指针变量的赋值146
9.1.5 直接访问和间接访问146
9.1.6 地址值的输出149
9.2 指针作为函数参数149
9.2.1 基本类型量作为函数参数150
9.2.2 指针变量作为函数参数151
9.3 指针和指向数组的指针152
9.3.1 一维数组与指针152
9.3.2 一维数组元素指针作为函数参数155
9.3.3 指针和字符串159
9.3.4 二维数组与指针163
9.3.5 获得函数处理结果的几种方法168
9.4 指针数组170
9.4.1 指针数组的定义和使用170
9.4.2 使用指针数组处理二维数组171
9.4.3 利用字符指针数组处理字符串171
9.4.4 main函数的参数173
9.5 指向指针的指针174
9.6 指针和函数175
9.6.1 函数指针175
9.6.2 返回指针值的函数178
9.7 指针小结179
9.8 const型变量和const型指针、引用类型181
9.8.1 const型变量和const型指针181
9.8.2 引用类型变量的说明及使用183
9.8.3 引用和函数184
9.9 存储空间的动态分配和释放186
9.9.1 new和delete运算符186
9.9.2 使用new和delete运算符的注意事项188
9.10 链表及其算法188
9.10.1 结构体与指针188
9.10.2 链表的概念190
9.10.3 链表的常用算法191
9.11 用typedef定义新类型名198
第10章 类和对象201
10.1 类和对象的定义201
10.1.1 从结构体到类201
10.1.2 类和对象的定义格式201
10.1.3 对象成员的访问203
10.1.4 成员函数的定义203
10.1.5 对象的存储空间206
10.1.6 定义类和对象的有关说明206
10.2 初始化和撤销对象207
10.2.1 构造函数和析构函数208
10.2.2 缺省构造函数和缺省析构函数213
10.2.3 拷贝构造函数和缺省拷贝构造函数215
10.2.4 拷贝构造函数的调用时机218
10.2.5 利用构造函数进行类型转换220
10.3 成员函数的特性221
10.3.1 内联函数和外联函数221
10.3.2 成员函数的重载222
10.4 构造函数和对象成员225
10.5 this指针226
第11章 类和对象的其他特性229
11.1 静态成员229
11.1.1 静态数据成员229
11.1.2 静态成员函数230
11.2 友元232
11.2.1 友元函数232
11.2.2 一个类的成员函数作为另一个类的友元函数233
11.2.3 友元类234
11.3 常数据成员和常成员函数235
11.3.1 常数据成员235
11.3.2 常成员函数236
第12章 继承和派生238
12.1 继承的基本概念238
12.2 单一继承238
12.2.1 公有继承(派生)239
12.2.2 私有继承(派生)242
12.2.3 保护继承(派生)243
12.2.4 private成员和protected成员的区别243
12.3 多重继承244
12.4 基类成员的初始化246
12.4.1 基类的构造函数和析构函数的调用顺序246
12.4.2 对象成员构造函数和析构函数的调用顺序247
12.4.3 关于构造函数和析构函数的继承问题248
12.5 二义性和支配规则249
12.5.1 二义性(访问冲突)249
12.5.2 支配规则252
12.6 虚基类253
12.7 访问基类成员和对象成员的成员256
12.7.1 访问对象成员的成员256
12.7.2 访问基类成员257
12.8 赋值兼容258
第13章 多态性260
13.1 函数重载260
13.2 运算符重载261
13.2.1 运算符重载的几点说明261
13.2.2 运算符重载的两种方式262
13.2.3 类型转换函数—将本类对象转换成其他类对象276
13.2.4 其他运算符的重载278
13.2.5 字符串类288
13.2.6 运算符重载函数小结294
13.3 静态联编294
13.4 动态联编和虚函数296
13.4.1 虚函数的定义和使用296
13.4.2 虚析构函数301
13.5 纯虚函数和抽象类303
第14章 输入输出流313
14.1 输入输出基本概念313
14.1.1 输入输出流313
14.1.2 文本流、二进制流和数据文件313
14.1.3 缓冲314
14.2 输入输出类库314
14.2.1 基本输入输出流类体系314
14.2.2 用运算符重载实现基本数据类型量的输入输出316
14.2.3 缺省的输入输出格式317
14.3 输入输出格式控制318
14.3.1 使用成员函数进行格式控制318
14.3.2 使用操纵算子进行格式控制322
14.4 使用成员函数实现输入输出324
14.4.1 输出成员函数324
14.4.2 输入成员函数325
14.5 重载插入和提取运算符328
14.6 文件流类332
14.6.1 文件流类体系332
14.6.2 文件的打开和关闭332
14.6.3 文本文件的读写335
14.6.4 二进制文件的读写341
14.7 文件的随机访问343
14.8 输入输出流的出错处理346
*第15章 模板349
15.1 函数模板349
15.1.1 函数模板的定义和使用351
15.1.2 模板函数的重载356
15.1.3 函数模板的重载357
15.2 类模板358
15.2.1 类模板的定义和使用360
15.2.2 类模板的友元函数365
15.2.3 类模板的特殊处理368
15.3 总结370
附录A ASCII码表371
附录B 常用库函数372
参考文献376

教学资源推荐
作者: 郑阿奇 主编 丁有和 等编著
作者: [美]保罗·戴特尔 (Paul Deitel) 哈维·戴特尔(Harvey Deitel) 著
作者: Al Kelley, Ira Pohl
参考读物推荐
作者: [美] 卢克·韦林(Luke Welling), 劳拉·汤姆森(Laura Thomson) 著
作者: 邱彦林 著
作者: [加]吉姆·范·麦格伦(Jim Van Meggelen),[美]罗素·布莱恩特(Russell Bryant),[加]莱夫·马德森(Leif Madsen) 著