本书作者长期从事高级语言程序设计的教学活动,在认真分析了初学者学习C++语言的困难及认知规律的基础上,参阅了国内外数十种C++教材,设计了易于学习的教学内容体系。本书从过程型程序设计入手,深入浅出地介绍了C++语言的语法规则,并着重讲解了面向对象程序设计的思想和关键技术。在体系结构上力求重点突出,内容全面但不琐碎,讲解中注重理论结合实际,通过典型例题对语法规则、编程思想进行详尽的解释和分析,有助于读者对知识点的理解和掌握。
本书共13章,分别是C++基础、基本数据类型与运算符、程序控制、函数、数组、指针与引用、自定义数据类型、类(I)、类(II)、运算符重载、继承与派生、虚函数与多态性、C++输入/输出流。每章附有应用实例,通过具体的实例展示本章知识点在实际中的应用;每章的小结,对本章主要内容做归纳总结;每章最后还配有相关的习题,以便读者练习和自查。
本书是学习C++的入门教程,起点低,无须C语言的基础,可以作为高等院校电子信息类专业程序设计基础的教材,也可作为有兴趣学习C++的非计算机专业学生的辅助教材,同时适合自学。
作为最流行的面向对象程序设计语言之一,C++既支持过程化程序设计,也支持面向对象程序设计。从操作系统、设备控制到数据库、网络、数字媒体等众多的系统软件和应用软件开发领域都能看到它的身影。
为了帮助读者更好地学习C++程序设计,本书作者结合多年的C++教学实践和软件开发经验,从零编程基础入手,全面、系统地介绍了C++语言的相关知识,并辅以大量的程序实例。
本书具有如下特色:
1.详略得当,主次分明
C++中包含的内容较多,由于篇幅所限不可能面面俱到,必须有所取舍。书中对于非重点或较复杂的内容略讲,如数组部分重点是一维和二维数组,三维以上数组只介绍概念。
2.讲解由浅入深,循序渐进
本书的编排采用循序渐进的方式,内容从易到难,讲解由浅入深,适合各个层次的读者学习。
3.写作细致,以读者为出发点
本书的内容编排、概念表述、语法讲解、实例展示,以及源代码注释等都很细致,问题讲解清晰明了,尽量为读者扫清学习中的障碍。
4.贯穿大量的开发实例和技巧
本书精选重点,强化主要概念,在讲解知识点时贯穿了大量的典型实例和开发技巧,以例题释含义,力求让读者获得真正实用的知识。
5.配套资源丰富
为方便教学和自学,本书配套有“C++程序设计习题与上机指导”以及教学PPT、例题源代码等,力求帮助读者通过具体实践掌握C++的编程方法。
本书阅读建议:
1)建议没有基础的读者,从前向后顺次阅读,尽量不要跳跃。
2)书中的实例和习题要亲自上机动手实践,学习效果更好。
3)课后习题不仅要给出代码,最好能上机调试运行,以加强和巩固对知识点的理解和掌握。
本书由刘厚泉提出编写计划和结构安排,其中刘厚泉编写第1、2章,李政伟编写第3、4章,葛欣编写第5、6章,李政伟、刘佰龙编写第7章,薛猛编写第8、9章,席景科、赵莹编写第10、11章,徐东红、谢红侠编写第12、13章,最后由葛欣统稿。
本书的编写参考了大量的同类书籍。为此,我们向有关的作者和译者表示衷心的感谢。
由于C++程序设计涉及的内容非常丰富,限于编者的水平,书中个别地方难免有疏漏,敬请读者批评指正,如对本书有任何建议或意见,敬请来信bookserviceofcpp@126.com。
编者
目 录
前言
第1章 C++基础1
1.1 程序设计语言简介1
1.1.1 程序设计语言的发展概况1
1.1.2 如何学好程序设计1
1.2 C++语言的特点与程序结构2
1.2.1 C++语言的特点2
1.2.2 简单的C++程序示例2
1.2.3 C++程序的结构5
1.3 过程型程序设计6
1.3.1 过程型程序设计的特点6
1.3.2 程序设计流程图6
1.4 面向对象程序设计7
1.4.1 面向对象程序设计的特点7
1.4.2 如何进行面向对象程序设计8
1.5 程序设计环境8
1.5.1 程序集成开发环境的功能8
1.5.2 下载与安装9
1.5.3 程序编辑与运行10
1.5.4 编译与运行11
1.5.5 单步调试12
1.6 小结13
习题 14
第2章 基本数据类型与运算符17
2.1 基本数据类型17
2.1.1 数据类型的作用17
2.1.2 常用的C++数据类型17
2.2 常量18
2.2.1 常量的特点18
2.2.2 数值常量的表示18
2.2.3 字符常量19
2.3 变量21
2.3.1 变量的概念21
2.3.2 变量的定义22
2.3.3 标识符的命名规则22
2.3.4 变量的初始化与赋值23
2.4 赋值与算术运算符24
2.4.1 赋值运算符与赋值运算表达式24
2.4.2 算术运算符24
2.4.3 自增与自减运算符25
2.5 逻辑运算符和关系运算符25
2.5.1 逻辑常量和逻辑变量25
2.5.2 逻辑运算符和逻辑表达式26
2.5.3 关系运算符和关系表达式27
2.6 其他运算符28
2.6.1 逗号运算符28
2.6.2 复合赋值运算符29
2.6.3 sizeof( )运算符29
2.7 运算符的优先级和结合性29
2.8 数据类型的转换30
2.8.1 隐式转换30
2.8.2 显式转换32
2.9 小结32
习题 32
第3章 程序控制36
3.1 顺序结构36
3.2 选择结构36
3.2.1 if语句37
3.2.2 嵌套if语句39
3.2.3 条件运算符? :的替代41
3.2.4 switch语句42
3.3 循环结构45
3.3.1 while语句45
3.3.2 do-while语句46
3.3.3 for语句47
3.3.4 循环嵌套50
3.4 跳转结构50
3.4.1 break语句51
3.4.2 continue语句52
3.4.3 goto语句53
3.4.4 return语句53
3.5 应用实例53
3.6 小结58
习题 59
第4章 函数61
4.1 模块化程序设计61
4.1.1 函数的概念61
4.1.2 模块化程序设计引例61
4.1.3 函数的分类62
4.2 函数定义与声明63
4.2.1 函数的定义63
4.2.2 函数声明与函数原型64
4.3 函数调用65
4.3.1 函数调用的概念65
4.3.2 函数的传值调用67
4.4 为形参指定默认值68
4.5 函数重载69
4.6 函数模板71
4.7 嵌套调用73
4.8 递归函数74
4.9 变量的作用域与生存期77
4.10 变量的存储类别79
4.10.1 自动变量80
4.10.2 寄存器变量80
4.10.3 用extern声明全局变量80
4.10.4 静态变量82
4.11 内部函数和外部函数83
4.11.1 内部函数84
4.11.2 外部函数84
4.12 预处理指令85
4.12.1 #include指令85
4.12.2 #def?ine指令85
4.12.3 #if、#else、#endif、#ifdef、
#ifndef指令86
4.13 应用实例87
4.14 小结90
习题 90
第5章 数组93
5.1 一维数组的定义与初始化93
5.1.1 一维数组的定义93
5.1.2 一维数组的初始化94
5.2 一维数组的使用94
5.3 一维数组与函数96
5.4 二维数组99
5.4.1 二维数组的定义99
5.4.2 二维数组的初始化100
5.4.3 二维数组的使用100
5.5 字符数组103
5.5.1 字符数组的定义103
5.5.2 字符数组的初始化103
5.5.3 字符数组的使用104
5.5.4 字符串常用函数106
5.6 string类型109
5.6.1 字符串变量的定义与初始化109
5.6.2 字符串变量的使用109
5.6.3 字符串数组110
5.7 应用实例111
5.8 小结117
习题 117
第6章 指针与引用119
6.1 指针的定义与初始化119
6.1.1 指针的定义119
6.1.2 指针的初始化120
6.2 指针的使用121
6.2.1 指针运算符121
6.2.2 指针变量的运算122
6.3 指针与数组124
6.3.1 指针与一维数组124
6.3.2 指针与二维数组127
6.4 指针与字符串130
6.5 指针与函数132
6.5.1 指针作为函数参数132
6.5.2 指针作为函数返回值137
6.6 引用138
6.6.1 引用的定义138
6.6.2 引用的使用139
6.7 应用实例141
6.8 小结145
习题 146
第7章 自定义数据类型148
7.1 结构体类型148
7.1.1 结构体类型概述148
7.1.2 结构体变量的初始化149
7.1.3 结构体变量成员的引用150
7.1.4 结构体与指针150
7.2 结构体的使用151
7.2.1 结构体与函数151
7.2.2 结构体与数组153
7.3 单向链表156
7.3.1 new和delete运算符156
7.3.2 单向链表的定义157
7.3.3 单向链表的操作158
7.4 共用体类型164
7.5 枚举类型164
7.6 类型定义typedef165
7.7 小结166
习题 166
第8章 类(Ⅰ)169
8.1 类的定义169
8.1.1 结构体和类169
8.1.2 基本概念171
8.1.3 类的定义172
8.1.4 成员函数的定义175
8.1.5 内联成员函数178
8.2 对象179
8.2.1 对象的定义179
8.2.2 成员访问180
8.3 构造函数181
8.3.1 构造函数的定义181
8.3.2 子对象与构造函数186
8.3.3 复制构造函数188
8.4 析构函数191
8.4.1 析构函数的定义191
8.4.