C++语言基础知识全集_第1页
C++语言基础知识全集_第2页
C++语言基础知识全集_第3页
C++语言基础知识全集_第4页
C++语言基础知识全集_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第1 1章章 C+C+语言基础语言基础 nC+是一种以是一种以C语言为基础开发的高级语语言为基础开发的高级语 言,一般认为言,一般认为C是是C+的一个子集或基础的一个子集或基础 语言,但二者又是完全独立的。语言,但二者又是完全独立的。 nC+适合大型程序的开发与设计适合大型程序的开发与设计 nC则适合于更底层的项目开发则适合于更底层的项目开发 1.1 C+语言概述语言概述 1.1.1 标准标准C+ nC+发明者:发明者:Bell实验室实验室Bjarne Stroustrup 博士博士 nC+第一定义:第一定义:“带类的带类的C” C+保留了保留了C作为一个子集作为一个子集 C+从从Simul

2、a语言引入了类的概念,包括派生语言引入了类的概念,包括派生 类和虚函数;借鉴了类和虚函数;借鉴了Algol语言的运算符重载等语言的运算符重载等 特性。特性。 1.1.1 标准标准C+(续)续) n起初,起初,C+编译系统只是一个预编译系统。编译系统只是一个预编译系统。 n1988年,出现一个真正的年,出现一个真正的C+编译系统。编译系统。 n1998年,年,ISO/ANSI C+标准正式通过并发标准正式通过并发 布。布。 n总体上,总体上,C+是一种混合语言,是集过程化是一种混合语言,是集过程化 设计、面向对象、基于对象和泛型算法等设计、面向对象、基于对象和泛型算法等 多种技术于一体的编程语言

3、。多种技术于一体的编程语言。 n学习学习C+最重要的是集中关注概念,不要迷最重要的是集中关注概念,不要迷 失在语言的技术细节中。失在语言的技术细节中。 1.1.2 C+语言的简单程序语言的简单程序 #include using namespace std; int main( ) int x = 10, y = 20; int z = x+y; cout “sum is ” z endl; return 0; 输出结果:输出结果:sum is 30 1.1.2 C+语言的简单程序(续)语言的简单程序(续) n1 main函数与程序结构函数与程序结构 n一个完整的程序有且只能有一个一个完整的程序

4、有且只能有一个main()主主 函数或入口函数函数或入口函数 n标准标准C+要求要求main函数的声明类型为函数的声明类型为int, 只要在末尾加上只要在末尾加上return 0; 1.1.2 C+语言的简单程序(续)语言的简单程序(续) nC+的程序结构的程序结构 预处理命令部分预处理命令部分 函数声明部分函数声明部分 类型定义部分类型定义部分 main函数定义函数定义 其它函数定义其它函数定义 n函数由函数体构成,一般包括变量定义、函数由函数体构成,一般包括变量定义、 输入、运算和输出等内容。输入、运算和输出等内容。 1.1.2 C+语言的简单程序(续)语言的简单程序(续) n2 头文件包

5、含与名字空间头文件包含与名字空间 固定写法:固定写法: #include /头文件包含头文件包含 using namespace std; /名字空间声明名字空间声明 可以将一个名字空间理解成包含若干定义的一可以将一个名字空间理解成包含若干定义的一 个区域的名字。个区域的名字。 标准标准C+所有定义都属于名字空间所有定义都属于名字空间std。 1.1.2 C+语言的简单程序(续)语言的简单程序(续) n3 注释注释 n+的的“块注释块注释”:* *和和* *为分界符号,为分界符号, 与中的用法一致。与中的用法一致。 n+的的“行注释行注释”:以:以/符号开始到一行符号开始到一行 的结束。的结束

6、。 n使用注释符时的注意事项:使用注释符时的注意事项: 标志符标志符/ /和和* *,/ /和和/ /之间不可之间不可 以分开。以分开。 注释符对注释符对“/ /* *”和和“* */ /”不可以嵌套。不可以嵌套。 注释符注释符/之后的注释结束于本行。之后的注释结束于本行。 /和和/ /* *与与* */ /可以嵌套使用。可以嵌套使用。 1.1.2 C+语言的简单程序(续)语言的简单程序(续) n思考题:下列程序是否正确?思考题:下列程序是否正确? #include using namespace std; int main() /*下面程序将在终端上输出下面程序将在终端上输出/*你好你好*/

7、的字的字 样样*/ cout “你好你好!” endl;/*/输出字符输出字符*/ return 0 ;/*/正常返回正常返回 1.1.2 C+语言的简单程序(续)语言的简单程序(续) n4 输入输出对象输入输出对象 n使用使用I/O流必须要包含流必须要包含“iostream”头文件。头文件。 “#include ”告诉告诉C+编译器,将文件编译器,将文件 iostream内容插到此程序中。内容插到此程序中。 niostream中定义了一组标准类中定义了一组标准类输入输出流(输入输出流(I/O stream)类。类。 n流流八位的字节序列。八位的字节序列。 ncout是标准输出流类的一个预定义

8、的对象,代表是标准输出流类的一个预定义的对象,代表 控制台输出设备(控制台输出设备(console out)如:显示器。如:显示器。 ncin是是cout的反义词,控制台输入,如键盘。的反义词,控制台输入,如键盘。 1.1.2 C+语言的简单程序(续)语言的简单程序(续) ncincin与与coutcout说明说明 用来取代用来取代scanf和和printf,更安全、更方便。更安全、更方便。 1 格式控制符与输出数据的类型不一致格式控制符与输出数据的类型不一致 2 scanf()的第二个参数应是一个指针参数,以上错误的第二个参数应是一个指针参数,以上错误C编编 译器不能检查出来。译器不能检查出

9、来。 #include void main() int i; float f; scanf(“%f”,i); printf(“%d”,f); #include using namespace std; void main() int i; float f; cini; cout”在在C+中仍保持中仍保持C中中“右移右移” 功能,但用于输入时扩充了其功能,表示将从标功能,但用于输入时扩充了其功能,表示将从标 准输入流准输入流(键盘键盘)读取的数值传送给右方指定的变读取的数值传送给右方指定的变 量。量。 如:如:cinx; /键盘输入的数据自动转换为变量键盘输入的数据自动转换为变量X 的类型,并存

10、入变量的类型,并存入变量X内。内。 n可以连续输,如可以连续输,如cinabc;不用顾忌类型。不用顾忌类型。 它按书写顺序从键盘上提取所要求的数据,并存它按书写顺序从键盘上提取所要求的数据,并存 入对应的变量中。入对应的变量中。 n用用cin输入时,要注意使用间隔符输入时,要注意使用间隔符 (空格、回车、空格、回车、 Tab键键)。 1.1.2 C+语言的简单程序(续)语言的简单程序(续) cout中运算符中运算符“”在在C+中保持中保持C中中“左左 移移”功能,表示将右方变量的值写到标准功能,表示将右方变量的值写到标准 输出流输出流cout(即屏幕即屏幕)中。中。 “”允许用户连允许用户连

11、续输出一串数据或表达式。续输出一串数据或表达式。 可以使用格式控制可以使用格式控制(与与C兼容兼容),默认的转换,默认的转换 基数是十进制。基数是十进制。 如:如:dec(十进制十进制), hex(十六进制十六进制), oct(八进制八进制), endl, t, n等。等。 1.1.2 C+语言的简单程序(续)语言的简单程序(续) C中换行用中换行用n; C+中换行用中换行用endl; 如:如:coutxendl; coutyn;等价于等价于printf(“%dn”,x); #include using namespace std; void main() int x=25; couthexx

12、decxoctxn; 输出结果:输出结果:19 25 31 1.1.2 C+语言的简单程序(续)语言的简单程序(续) n5 5 灵活的局部变量声明灵活的局部变量声明 下面局部变量声明是否正确?为什么?下面局部变量声明是否正确?为什么? f ( ) int i; i=10; int j; j=25; / 1.1.2 C+语言的简单程序(续)语言的简单程序(续) n6 编码习惯编码习惯 尽量保持好的书写风格是必须养成的习惯。尽量保持好的书写风格是必须养成的习惯。 要注意程序的书写格式,如缩进格式和成对符要注意程序的书写格式,如缩进格式和成对符 号的对齐排列等。号的对齐排列等。 1.2 面向对象的程

13、序设计思想面向对象的程序设计思想 nC向向C+过渡的实质是由过程化程序设计过渡的实质是由过程化程序设计 思想向面向对象程序设计的思想的转变。思想向面向对象程序设计的思想的转变。 程序设计语言的发展程序设计语言的发展 硬件发展硬件发展软件危机软件危机结构化程序设计结构化程序设计 软件工程软件工程面向对象技术面向对象技术 机器码机器码低级低级高级;高级; 1.2.1 过程化的程序设计过程化的程序设计 n面向过程编程面向过程编程 它是早期的程序设计范型,它考察整个设计过 程,以功能分解为中心。 n面向过程的特征面向过程的特征 早期程序设计者认为: 程序 = 数据结构 + 算法 这个公式贯穿于整个程序

14、设计的始终,无论程 序是系统程序还是模块程序。 1.2.1 过程化的程序设计(续)过程化的程序设计(续) n过程化的问题处理思路形成了一套有效的过程化的问题处理思路形成了一套有效的 程序设计方法,称为结构化方法。程序设计方法,称为结构化方法。 程序设计采用自顶向下,逐步细分的方法展开。程序设计采用自顶向下,逐步细分的方法展开。 模块化模块化 使用三种基本控制结构:顺序、选择、循环。使用三种基本控制结构:顺序、选择、循环。 n三种结构的共同点:每种结构只有一个入口和一个三种结构的共同点:每种结构只有一个入口和一个 出口。出口。 1.2.1 过程化的程序设计(续)过程化的程序设计(续) n过程化方

15、法应用举例: int main( ) 开始函数();开始函数(); 绘制画面函数(初始棋局);绘制画面函数(初始棋局); 重复下述步骤重复下述步骤 走棋函数(黑子);走棋函数(黑子); 如果(判断输赢(棋局)已定出输赢)停止重复;如果(判断输赢(棋局)已定出输赢)停止重复; 走棋函数(白子);走棋函数(白子); 绘制画面函数(棋局);绘制画面函数(棋局); 如果(判断输赢(棋局)已定出输赢)停止重复;如果(判断输赢(棋局)已定出输赢)停止重复; 输出结果函数(棋局);输出结果函数(棋局); 结束函数();结束函数(); 1.2.1 过程化的程序设计(续)过程化的程序设计(续) n面向过程的不足

16、面向过程的不足 强调功能分解,为了实现功能,有时数据结 构屈从于算法,结果造成数据结构和过程的 分离。 n由于过程化设计中的数据与过程是相互独立的, 一个过程完全可以作用到并不相关的数据上, 也不能保证对数据操作的合理性,数据对于算 法完全是被动的。 n此种操作是一种“谓语宾语”结构。 对于庞大、复杂的程序难以开发和维护对于庞大、复杂的程序难以开发和维护 1.2.2 面向对象的程序设计面向对象的程序设计 n面向对象编程面向对象编程 是一种以对象为中心的程序设计范型。也可以 说是一套概念和想法,它与面向过程程序设计 相对应,是一种用计算机程序来描述实际问题 的思路。 n面向对象的特征面向对象的特

17、征 OO(Object-Oriented)程序设计者认为: 程序 = 对象 + 消息 这个公式表明面向对象的程序以对象为程序组 成单位,以消息为动力(驱动)。 1.2.2 面向对象的程序设计(续)面向对象的程序设计(续) n面向对象方法应用举例: int main() 定义对象,包括黑棋选手,白棋选手,裁判,组织者;定义对象,包括黑棋选手,白棋选手,裁判,组织者; 裁判确定比赛开始();裁判确定比赛开始(); 组织者绘制画面();组织者绘制画面(); 重复下述步骤重复下述步骤 黑棋选手黑棋选手.走棋();走棋(); 如果(裁判如果(裁判.判断输赢()已定出输赢)停止重复;判断输赢()已定出输赢

18、)停止重复; 白棋选手白棋选手.走棋();走棋(); 组织者组织者.绘制画面();绘制画面(); 如果(裁判如果(裁判.判断输赢()已定出输赢)停止重复;判断输赢()已定出输赢)停止重复; 组织者组织者.输出结果();输出结果(); 裁判裁判.确定比赛结束();确定比赛结束(); 1.2.2 面向对象的程序设计(续)面向对象的程序设计(续) n面向对象的好处面向对象的好处 以对象为单位组织程序,更接近人思维方式, OO借鉴了认知论的观点。 不同对象各司其职,对象自身行为的实现方式 的改变不会影响到其它对象,对象间通过互通 消息实现合作。 从实现上看,对象的每次操作都是在该对象接 收到一定消息后

19、的自主行为(用“对象.函数名” 形式表示),具有“主语谓语”的形式。 1.2.2 面向对象的程序设计(续)面向对象的程序设计(续) n面向对象和面向过程面向对象和面向过程 两者不是对立的,面向对象是面向过程发展到 一定阶段的产物,是程序设计的高级阶段,面 向对象以面向过程为基础。 n二者的适合情况二者的适合情况 对于一些简单的问题,基于过程的解决方法是 十分有效的。 对于大型、复杂的系统,采用面向对象的方法 更能显示出优势,有利于利用对象构成软件 “积木插件”,进而在一定的程度上解决软件 重用的难题。 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点 n面向对象系统最突出的特征面向

20、对象系统最突出的特征 封装性、继承性、多态性(三个特性) n封装的概念和数据抽象(类)密切相关封装的概念和数据抽象(类)密切相关 n现实中的例子 人们使用录音机,只要知道键的功能即可(放人们使用录音机,只要知道键的功能即可(放 音、录音、停止、倒带等),不需要知道这些音、录音、停止、倒带等),不需要知道这些 功能是如何实现的,也不需要知道其内部电路功能是如何实现的,也不需要知道其内部电路 或构造。或构造。 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n1 类与封装类与封装 n类的概念类的概念 类是一组具有相同属性和行为特征的对象的抽 象描述。 n类和对象的关系类和对象

21、的关系 抽象和具体的关系,类是多个对象的归纳和总 结(分类的结果),对象又是类的个体实物, 一个对象就是类的一个实例。 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n类和对象类和对象类型和变量类型和变量 类和对象实际上就是C的数据类型和变量,只 不过在C+中,统称为类和对象。 n对象的状态对象的状态 类没有具体的值,对象才有,对象的这些具体 的值称为对象的状态。 类类 对象对象 实例化实例化 声明声明 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n对象状态举例:对象状态举例: Teacher LiMing; LiMing.age = 30;

22、LiMing.degree = “doctor”; LiMing.title = “professor”; 名称名称LiMing age30 degreedoctor titleprofessor 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n类的结构类的结构 类的结构和对象的组成是严格对应的! 类中的成分有两种:数据成员和成员函数。 类类 数据成员数据成员对应对象的对应对象的 属性,也叫做成员变量。属性,也叫做成员变量。 成员函数成员函数对应对象的对应对象的 方法,是类功能的载体。方法,是类功能的载体。 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(

23、续续) n类的结构实例类的结构实例 数据成员数据成员 成员函数成员函数 class Teacher int age; char* degree; char* title; public: void Study( ); void Teach( ); int TellAge( ); ; 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n*类和对象的作用周期类和对象的作用周期 类只在源程序的代码中出现,它是编译 器生成对象的说明书,并不会在运行的程 序中出现 ,即类只在编译时存在; 对象作为类的实例是在运行的程序中出 现,并占有内存空间,它是程序运行时存 在的实体,是机器指令操

24、作的内容。 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n对象的特性对象的特性 对象是面向对象程序设计的最重要的细 胞和基石,它有如下的特性: 1 封装性封装性隐藏内部细节 2 模块独立性模块独立性实体的抽象(类) 3 动态连接性动态连接性消息机制 4 易维护性易维护性更新在边界内 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n对象的交互对象的交互 现实世界的对象并非孤立的实体,它们现实世界的对象并非孤立的实体,它们 间存在着联系,从而构成不同的系统。间存在着联系,从而构成不同的系统。 面向对象程序设计中,对象之间的联系面向对象程序设计中,对

25、象之间的联系 我们称之为对象的交互。我们称之为对象的交互。 n对象交互的实现对象交互的实现 在在OOP中,对象交互的实现要用到一个中,对象交互的实现要用到一个 重要的工具:消息。重要的工具:消息。 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n对象交互图示对象交互图示 n消息消息 对象的交互中介(请求或通知) n消息传递消息传递 面向对象的程序设计中对象协作机制 对象对象1 对象对象2 消息消息 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n消息传递与调用消息传递与调用 实际上,对象的消息传递对应于程序设计实际上,对象的消息传递对应于程序设计

26、 中的过程(函数)调用。中的过程(函数)调用。 比如:键盘对象的按键消息传给显示对象比如:键盘对象的按键消息传给显示对象 n消息的发送和接收消息的发送和接收 发送消息的对象为发送者或请求者,接收发送消息的对象为发送者或请求者,接收 消息的目标对象为接收者或服务者(有处理消息的目标对象为接收者或服务者(有处理 消息的能力)。消息的能力)。 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n消息的处理简单模型消息的处理简单模型 消息的处理就是过程(函数)的执行。消息的处理就是过程(函数)的执行。 某过程某过程 Teacher t; / t.Study(实参实参); / ret

27、urn 0; ; 代码后半部分 消息传递给消息传递给t 代码前半部分 某过程 代码在中 对象对象t t的内容的内容 / /执行代码执行代码 Study(Study(参数参数) ) 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n消息的内容组成消息的内容组成 包含有接收者的名字,请求的方法,一 个或多个参数。 n消息机制可以扩充的很复杂消息机制可以扩充的很复杂 n消息的性质消息的性质 1、一消息可以发给多个对象 2、一对象可以接受多个消息 3、对象可以响应消息,也可不响应 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n2 继承继承 n类间的承袭关

28、系类间的承袭关系 继承所表达的是对象类之间的相互关系,这种继承所表达的是对象类之间的相互关系,这种 关系让某类对象可以使用另外一类对象的特征关系让某类对象可以使用另外一类对象的特征 和能力。和能力。 父母父母 孩子孩子 继承继承 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n继承类之间的几个特性继承类之间的几个特性 1 1 类间具有共享的特征(数据和代码共享)类间具有共享的特征(数据和代码共享) 2 2 类间具有差别和新增部分(非共享内容)类间具有差别和新增部分(非共享内容) 3 3 类间具有层次结构类间具有层次结构 n假如有类假如有类B B继承类继承类A A,则类则

29、类B B 的对象具有类的对象具有类A A的一切特征,的一切特征, 此时,类此时,类A A为基类或父类或为基类或父类或 超类,类超类,类B B为派生类或子类为派生类或子类 基类基类 派生类派生类 继承继承 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n继承机制的优点继承机制的优点 1 1 代码重用,避免重复开发代码重用,避免重复开发 2 2 增强一致性,统一的处理接口和界面增强一致性,统一的处理接口和界面 3 3 代码进化,高效的扩充功能代码进化,高效的扩充功能 n为程序员提供了一种组织、构造和重用类为程序员提供了一种组织、构造和重用类 的方法。的方法。 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n继承的分类继承的分类 从继承源上分,继承分为单继承和多继承 窗口窗口 对话框对话框 玩具玩具车车 玩具车玩具车 单继承单继承 多继承多继承 1.3 面向对象程序设计的主要特点面向对象程序设计的主要特点(续续) n继承的分类继承的分类 从继承内容上分,继承分为取代继承、包从继承内容上分,继承分为取代继承、包 含继承含继承 、受限继承和特化继承、受限继承和特化继承

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论