没有合适的资源?快使用搜索试试~ 我知道了~
首页C++_面向对象程序设计_谭浩强 word完整版
C++_面向对象程序设计_谭浩强 word完整版
4星 · 超过85%的资源 需积分: 0 16 下载量 94 浏览量
更新于2023-03-16
评论 2
收藏 5.02MB DOC 举报
第1篇 基 本 知 识 第1章 C++的初步知识 第2章 数据类型与表达式 第2篇 面向过程的程序设计 第3章 程序设计初步 第4章 函数与预处理 第5章 数组 第6章 指针 第7章 自定义数据类型 第3篇 基于对象的程序设计 第8章 类和对象 第9章 关于类和对象的进一步讨论 第10章 运算符重载 第4篇 面向对象的程序设计 第11章 继承与派生 第12章 多态性与虚函数 第13章 输入输出流 第14章 C++工具
资源详情
资源评论
资源推荐
总 目 录
第 篇 基 本 知 识
第
章 的初步知识
第
章 数据类型与表达式
第 篇 面向过程的程序设计
第
章 程序设计初步
第 章 函数与预处理
第 章 数组
第 章 指针
第 章 自定义数据类型
第 篇 基于对象的程序设计
第 章 类和对象
第 章 关于类和对象的进一步讨论
第 章 运算符重载
第 篇 面向对象的程序设计
第 章 继承与派生
第 章 多态性与虚函数
第 章 输入输出流
第 章 工具
第 章 的初步知识
第 章 数据类型与表达式
第 篇 基 本 知 识
第 章 的初步知识
从 到
最简单的 程序
程序的构成和书写形式
程序的编写和实现
关于 上机实践
从 到
计算机诞生初期人们要使用计算机必须用机器语言或汇编语言编写程序。
世界上第一种计算机高级语言诞生于 年它是 语言。先后出现
了多种计算机高级语言。其中使用最广泛、影响最大的当推 语言和 语言
。
语言是 年在 语言的基础上简化而成的它是为初
学者设计的小型高级语言。
语言是 年由美国贝尔实验室的 研制成功的。它不是
为初学者设计的而是为计算机专业人员设计的。大多数系统软件和许多应用软
件都是用 语言编写的。
但是随着软件规模的增大用 语言编写程序渐渐显得有些吃力了。
是由 ! ""#贝尔$实验室的 %&'( ')*+'*, 博士及其同事于
1
世纪 年代初在 语言的基础上开发成功的。保留了 语言原有的所
有优点增加了面向对象的机制。
是由 发展而来的与 兼容。用 语言写的程序基本上可以不加修
改地用于 。从 的名字可以看出它是 的超集。既可用于面向过
程的结构化程序设计又可用于面向对象的程序设计是一种功能强大的混合型
的程序设计语言。
对 的“增强”表现在两个方面-
#$在原来面向过程的机制基础上对 语言的功能做了不少扩充。
#$增加了面向对象的机制。
面向对象程序设计是针对开发较大规模的程序而提出来的目的是提高软
件开发的效率。
不要把面向对象和面向过程对立起来面向对象和面向过程不是矛盾的而
是各有用途、互为补充的。
学习 既要会利用 进行面向过程的结构化程序设计也要会利用
进行面向对象的程序设计。本书既介绍 在面向过程程序设计中的应用
也介绍 在面向对象程序设计中的应用。
最简单的 程序
例 输出一行字符-.++&,')/'&01。
程序如下-
2("*3 4)+' &05//
包含头文件
iostream
*+(/(&0 +,& +36//
使用命名空间
std
(0&(#$
7
)*448++&,')/'&086
' *'(6
9
在运行时会在屏幕上输出以下一行信息-
++&,')/'&0
用 0&( 代表“主函数”的名字。每一个 程序都必须有一个 0&(函数
。0&( 前面的 ( 的作用是声明函数的类型为整型。程序第 行的作用是向操作
系统返回一个零值。如果程序不能正常执行则会自动向操作系统返回一个非零
值一般为:。
函数体是由大括号79括起来的。本例中主函数内只有一个以 )* 开头的
语句。注意 所有语句最后都应当有一个分号。
再看程序的第 行“2("*3 4)+' &051这不是 的语句而是
的一个预处理命令它以“21开头以与 语句相区别行的末尾没有分号
。2("*3 4)+' &05是一个“包含命令”它的作用是将文件 )+' &0 的内
容包含到该命令所在的程序文件中代替该命令行。文件 )+' &0 的作用是向
程序提供输入或输出时所需要的一些信息。)+' &0 是 :):+' &0 个词的组
合从它的形式就可以知道它代表“输入输出流”的意思由于这类文件都放在程序
单元的开头所以称为“头文件”# &3;" $。在程序进行编译时先对所有的预处
理命令进行处理将头文件的具体内容代替 2("*3 命令行然后再对该程序单
元进行整体编译。
程序的第 行“*+(/(&0 +,& +361的意思是“使用命名空间
2
+31。标准库中的类和函数是在命名空间 +3 中声明的因此程序中如果需
要用到 标准库#此时就需要用2("*3 命令行$就需要用“*+(/
(&0 +,& +361作声明表示要用到命名空间 +3 中的内容。
在初学 时对本程序中的第 行可以不必深究只需知道-如果程序
有输入或输出时必须使用“2("*3 4)+' &051命令以提供必要的信息同
时要用“*+(/(&0 +,& +361使程序能够使用这些信息否则程序编译时
将出错。
例 求 & 和 < 两个数之和。
可以写出以下程序-
//
求两数之和
(
本行是注释行
)
2("*3 4)+' &05//
预处理命令
*+(/(&0 +,& +36//
使用命名空间
std
(0&(#$//
主函数首部
7//
函数体开始
(&<+*06//
定义变量
(55&55<6//
输入语句
+*0=&<6//
赋值语句
)*448&<=844+*044 (3"6//
输出语句
' *'(6//
如程序正常结束
,
向操作系统返回一个零值
9//
函数结束
本程序的作用是求两个整数 & 和 < 之和 +*0。第 行“>>求两数之和”是一个
注释行规定在一行中如果出现“>>1则从它开始到本行末尾之间的全部内容
都作为注释。
如果在运行时从键盘输入
?
则输出为
&<=
例 给两个数 @ 和 A求两数中的大者。
在本例中包含两个函数。
2("*3 4)+' &05//
预处理命令
*+(/(&0 +,& +36
(0&@#(@(A$//
定义
max
函数
,
函数值为整型
,
形式参数
x,y
为整型
7//max
函数体开始
(B6//
变量声明
,
定义本函数中用到的变量
z
为整型
C#@5A$B=@6//if
语句
,
如果
x>y,
则将
x
的值赋给
z
"+ B=A6//
否则
,
将
y
的值赋给
z
' *'(#B$6//
将
z
的值返回
,
通过
max
带回调用处
9//max
函数结束
(0&(#$//
主函数
7//
主函数体开始
(&<06//
变量声明
(55&55<6//
输入变量
a
和
b
的值
0=0&@#&<$6//
调用
max
函数
,
将得到的值赋给
m
3
)*4480&@=844044DEE(D6//
输出大数
m
的值
' *'(6//
如程序正常结束
,
向操作系统返回一个零值
9//
主函数结束
本程序包括两个函数-主函数 0&( 和被调用的函数 0&@。
程序运行情况如下-
?#输入 和 给 & 和 <$
0&@=#输出 0 的值$
注意输入的两个数据间用一个或多个空格间隔不能以逗号或其他符号间隔
。
在上面的程序中0&@ 函数出现在 0&( 函数之前因此在 0&( 函数中调
用 0&@ 函数时编译系统能识别 0&@ 是已定义的函数名。如果把两个函数的位
置对换一下即先写 0&( 函数后写 0&@ 函数这时在编译 0&( 函数遇到
0&@ 时编译系统无法知道 0&@ 代表什么含义因而无法编译按出错处理。
为了解决这个问题在主函数中需要对被调用函数作声明。上面的程序可以
改写如下-
2("*3 4)+' &05
*+(/(&0 +,& +36
(0&(#$
7(0&@#(@(A$6//
对
max
函数作声明
(&<6
(55&55<6
=0&@#&<$6//
调用
max
函数
)*4480&@=84444 (3"6
' *'(6
9
(0&@#(@(A$//
定义
max
函数
7(B6
C#@5A$B=@6
"+ B=A6
' *'(#B$6
9
只要在被调用函数的首部的末尾加一个分号就成为对该函数的函数声明。
函数声明的位置应当在函数调用之前。
下面举一个包含类#"&++$和对象#)<% $的 程序目的是使读者初步
了解 是怎样体现面向对象程序设计方法的。
例 包含类的 程序。
2("*3 4)+' &05//
预处理命令
*+(/(&0 +,& +36
"&++*3 (//
声明一个类
,
类名为
Student
7,'F& -//
以下为类中的私有部分
((*06//
私有变量
num
(+)' 6//
私有变量
score
,*<"-//
以下为类中的公用部分
4
F)3+ 3&&#$//
定义公用函数
setdata
7(55(*06//
输入
num
的值
(55+)' 6//
输入
score
的值
9
F)33+,"&A#$//
定义公用函数
display
7)*448(*0=844(*044 (3"6//
输出
num
的值
)*448+)' =844+)' 44 (3"6//
输出
score
的值
96
96//
类的声明结束
*3 (+*3+*36//
定义
stud1
和
stud2
为
Student
类的变量
,
称
为对象
(0&(#$//
主函数首部
7+*3+ 3&&#$6//
调用对象
stud1
的
setdata
函数
+*3+ 3&&#$6//
调用对象
stud2
的
setdata
函数
+*33+,"&A#$6//
调用对象
stud1
的
display
函数
+*33+,"&A#$6//
调用对象
stud2
的
display
函数
' *'(6
9
在一个类中包含两种成员-数据和函数分别称为数据成员和成员函数。在
中把一组数据和有权调用这些数据的函数封装在一起组成一种称为“类
#"&++$1的数据结构。在上面的程序中数据成员 (*0+)' 和成员函数
+ 3&&3+,"&A 组成了一个名为 *3 ( 的“类”类型。成员函数是用来对数据
成员进行操作的。也就是说一个类是由一批数据以及对其操作的函数组成的。
类可以体现数据的封装性和信息隐蔽。在上面的程序中在声明 *3 ( 类
时把类中的数据和函数分为两大类-,'F& #私有的$和 ,*<"#公用的$。把全
部数据#(*0+)' $指定为私有的把全部函数#+ 3&&3+,"&A$指定为公用
的。在大多数情况下会把所有数据指定为私有以实现信息隐蔽。
具有“类”类型特征的变量称为“对象”#)<% $。
程序中第 G 行是主函数。
程序运行情况如下-
? #输入学生 的学号和成绩$
? #输入学生 的学号和成绩$
(*0=#输出学生 的学号$
+)' =#输出学生 的成绩$
(*0=#输出学生 的学号$
+)' =#输出学生 的成绩$
程序的构成和书写形式
程序的结构和书写格式归纳如下-
#$一个 程序可以由一个程序单位或多个程序单位构成。每一个程序
单位作为一个文件。在程序编译时编译系统分别对各个文件进行编译因此一个
文件是一个编译单元。
#$在一个程序单位中可以包括以下几个部分-
H预处理命令。上节 个程序中都包括2("*3 命令。
I全局声明部分#在函数外的声明部分$。在这部分中包括对用户自己定义
5
剩余63页未读,继续阅读
水犹寒
- 粉丝: 15
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2