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

下载本文档

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

文档简介

第1章C+语言基础,C+是一种以C语言为基础开发的高级语言,一般认为C是C+的一个子集或基础语言,但二者又是完全独立的。C+适合大型程序的开发与设计C则适合于更底层的项目开发,1.1C+语言概述,1.1.1标准C+,C+发明者:Bell实验室BjarneStroustrup博士C+第一定义:“带类的C”C+保留了C作为一个子集C+从Simula语言引入了类的概念,包括派生类和虚函数;借鉴了Algol语言的运算符重载等特性。,1.1.1标准C+(续),起初,C+编译系统只是一个预编译系统。1988年,出现一个真正的C+编译系统。1998年,ISO/ANSIC+标准正式通过并发布。总体上,C+是一种混合语言,是集过程化设计、面向对象、基于对象和泛型算法等多种技术于一体的编程语言。学习C+最重要的是集中关注概念,不要迷失在语言的技术细节中。,1.1.2C+语言的简单程序,#includeusingnamespacestd;intmain()intx=10,y=20;intz=x+y;cout“sumis”zendl;return0;输出结果:sumis30,1.1.2C+语言的简单程序(续),1main函数与程序结构一个完整的程序有且只能有一个main()主函数或入口函数标准C+要求main函数的声明类型为int,只要在末尾加上return0;,1.1.2C+语言的简单程序(续),C+的程序结构预处理命令部分函数声明部分类型定义部分main函数定义其它函数定义函数由函数体构成,一般包括变量定义、输入、运算和输出等内容。,1.1.2C+语言的简单程序(续),2头文件包含与名字空间固定写法:#include/头文件包含usingnamespacestd;/名字空间声明可以将一个名字空间理解成包含若干定义的一个区域的名字。标准C+所有定义都属于名字空间std。,1.1.2C+语言的简单程序(续),3注释+的“块注释”:*和*为分界符号,与中的用法一致。+的“行注释”:以/符号开始到一行的结束。使用注释符时的注意事项:标志符/和*,/和/之间不可以分开。注释符对“/*”和“*/”不可以嵌套。注释符/之后的注释结束于本行。/和/*与*/可以嵌套使用。,1.1.2C+语言的简单程序(续),思考题:下列程序是否正确?,#includeusingnamespacestd;intmain()/*下面程序将在终端上输出/*你好*/的字样*/cout“你好!”i;cout”在C+中仍保持C中“右移”功能,但用于输入时扩充了其功能,表示将从标准输入流(键盘)读取的数值传送给右方指定的变量。如:cinx;/键盘输入的数据自动转换为变量X的类型,并存入变量X内。可以连续输,如cinabc;不用顾忌类型。它按书写顺序从键盘上提取所要求的数据,并存入对应的变量中。用cin输入时,要注意使用间隔符(空格、回车、Tab键)。,1.1.2C+语言的简单程序(续),cout中运算符“”在C+中保持C中“左移”功能,表示将右方变量的值写到标准输出流cout(即屏幕)中。“”允许用户连续输出一串数据或表达式。可以使用格式控制(与C兼容),默认的转换基数是十进制。如:dec(十进制),hex(十六进制),oct(八进制),endl,t,n等。,1.1.2C+语言的简单程序(续),C中换行用n;C+中换行用endl;如:coutxendl;coutyn;等价于printf(“%dn”,x);,#includeusingnamespacestd;voidmain()intx=25;couthexxdecxoctxn;输出结果:192531,1.1.2C+语言的简单程序(续),5灵活的局部变量声明,下面局部变量声明是否正确?为什么?f()inti;i=10;intj;j=25;/,1.1.2C+语言的简单程序(续),6编码习惯尽量保持好的书写风格是必须养成的习惯。要注意程序的书写格式,如缩进格式和成对符号的对齐排列等。,1.2面向对象的程序设计思想,C向C+过渡的实质是由过程化程序设计思想向面向对象程序设计的思想的转变。,程序设计语言的发展硬件发展软件危机结构化程序设计软件工程面向对象技术机器码低级高级;,1.2.1过程化的程序设计,面向过程编程它是早期的程序设计范型,它考察整个设计过程,以功能分解为中心。面向过程的特征早期程序设计者认为:程序=数据结构+算法这个公式贯穿于整个程序设计的始终,无论程序是系统程序还是模块程序。,1.2.1过程化的程序设计(续),过程化的问题处理思路形成了一套有效的程序设计方法,称为结构化方法。程序设计采用自顶向下,逐步细分的方法展开。模块化使用三种基本控制结构:顺序、选择、循环。三种结构的共同点:每种结构只有一个入口和一个出口。,1.2.1过程化的程序设计(续),过程化方法应用举例:,intmain()开始函数();绘制画面函数(初始棋局);重复下述步骤走棋函数(黑子);如果(判断输赢(棋局)已定出输赢)停止重复;走棋函数(白子);绘制画面函数(棋局);如果(判断输赢(棋局)已定出输赢)停止重复;输出结果函数(棋局);结束函数();,1.2.1过程化的程序设计(续),面向过程的不足强调功能分解,为了实现功能,有时数据结构屈从于算法,结果造成数据结构和过程的分离。由于过程化设计中的数据与过程是相互独立的,一个过程完全可以作用到并不相关的数据上,也不能保证对数据操作的合理性,数据对于算法完全是被动的。此种操作是一种“谓语宾语”结构。对于庞大、复杂的程序难以开发和维护,1.2.2面向对象的程序设计,面向对象编程是一种以对象为中心的程序设计范型。也可以说是一套概念和想法,它与面向过程程序设计相对应,是一种用计算机程序来描述实际问题的思路。面向对象的特征OO(Object-Oriented)程序设计者认为:程序=对象+消息这个公式表明面向对象的程序以对象为程序组成单位,以消息为动力(驱动)。,1.2.2面向对象的程序设计(续),面向对象方法应用举例:,intmain()定义对象,包括黑棋选手,白棋选手,裁判,组织者;裁判确定比赛开始();组织者绘制画面();重复下述步骤黑棋选手.走棋();如果(裁判.判断输赢()已定出输赢)停止重复;白棋选手.走棋();组织者.绘制画面();如果(裁判.判断输赢()已定出输赢)停止重复;组织者.输出结果();裁判.确定比赛结束();,1.2.2面向对象的程序设计(续),面向对象的好处以对象为单位组织程序,更接近人思维方式,OO借鉴了认知论的观点。不同对象各司其职,对象自身行为的实现方式的改变不会影响到其它对象,对象间通过互通消息实现合作。从实现上看,对象的每次操作都是在该对象接收到一定消息后的自主行为(用“对象.函数名”形式表示),具有“主语谓语”的形式。,1.2.2面向对象的程序设计(续),面向对象和面向过程两者不是对立的,面向对象是面向过程发展到一定阶段的产物,是程序设计的高级阶段,面向对象以面向过程为基础。二者的适合情况对于一些简单的问题,基于过程的解决方法是十分有效的。对于大型、复杂的系统,采用面向对象的方法更能显示出优势,有利于利用对象构成软件“积木插件”,进而在一定的程度上解决软件重用的难题。,1.3面向对象程序设计的主要特点,面向对象系统最突出的特征封装性、继承性、多态性(三个特性)封装的概念和数据抽象(类)密切相关现实中的例子人们使用录音机,只要知道键的功能即可(放音、录音、停止、倒带等),不需要知道这些功能是如何实现的,也不需要知道其内部电路或构造。,1.3面向对象程序设计的主要特点(续),1类与封装类的概念类是一组具有相同属性和行为特征的对象的抽象描述。类和对象的关系抽象和具体的关系,类是多个对象的归纳和总结(分类的结果),对象又是类的个体实物,一个对象就是类的一个实例。,1.3面向对象程序设计的主要特点(续),类和对象类型和变量类和对象实际上就是C的数据类型和变量,只不过在C+中,统称为类和对象。对象的状态类没有具体的值,对象才有,对象的这些具体的值称为对象的状态。,类对象,实例化,声明,1.3面向对象程序设计的主要特点(续),对象状态举例:,TeacherLiMing;LiMing.age=30;LiMing.degree=“doctor”;LiMing.title=“professor”;,1.3面向对象程序设计的主要特点(续),类的结构类的结构和对象的组成是严格对应的!类中的成分有两种:数据成员和成员函数。,类,数据成员对应对象的属性,也叫做成员变量。成员函数对应对象的方法,是类功能的载体。,1.3面向对象程序设计的主要特点(续),类的结构实例数据成员成员函数,classTeacherintage;char*degree;char*title;public:voidStudy();voidTeach();intTellAge();;,1.3面向对象程序设计的主要特点(续),*类和对象的作用周期类只在源程序的代码中出现,它是编译器生成对象的说明书,并不会在运行的程序中出现,即类只在编译时存在;对象作为类的实例是在运行的程序中出现,并占有内存空间,它是程序运行时存在的实体,是机器指令操作的内容。,1.3面向对象程序设计的主要特点(续),对象的特性对象是面向对象程序设计的最重要的细胞和基石,它有如下的特性:1封装性隐藏内部细节2模块独立性实体的抽象(类)3动态连接性消息机制4易维护性更新在边界内,1.3面向对象程序设计的主要特点(续),对象的交互现实世界的对象并非孤立的实体,它们间存在着联系,从而构成不同的系统。面向对象程序设计中,对象之间的联系我们称之为对象的交互。对象交互的实现在OOP中,对象交互的实现要用到一个重要的工具:消息。,1.3面向对象程序设计的主要特点(续),对象交互图示消息对象的交互中介(请求或通知)消息传递面向对象的程序设计中对象协作机制,对象1,对象2,消息,1.3面向对象程序设计的主要特点(续),消息传递与调用实际上,对象的消息传递对应于程序设计中的过程(函数)调用。比如:键盘对象的按键消息传给显示对象消息的发送和接收发送消息的对象为发送者或请求者,接收消息的目标对象为接收者或服务者(有处理消息的能力)。,1.3面向对象程序设计的主要特点(续),消息的处理简单模型消息的处理就是过程(函数)的执行。,某过程Teachert;/t.Study(实参);/return0;,对象t的内容,/执行代码,Study(参数),1.3面向对象程序设计的主要特点(续),消息的内容组成包含有接收者的名字,请求的方法,一个或多个参数。消息机制可以扩充的很复杂消息的性质1、一消息可以发给多个对象2、一对象可以接受多个消息3、对象可以响应消息,也可不响应,1.3面向对象程序设计的主要特点(续),2继承类间的承袭关系继承所表达的是对象类之间的相互关系,这种关系让某类对象可以使用另外一类对象的特征和能力。,父母,孩子,继承,1.3面向对象程序设计的主要特点(续),继承类之间的几个特性1类间具有共享的特征(数据和代码共享)2类间具有差别和新增部分(非共享内容)3类间具有层次结构假如有类B继承类A,则类B的对象具有类A的一切特征,此时,类A为基类或父类或超类,类B为派生类或子类,基类,派生类,继承,1.3面向对象程序设计的主要特点(续),继承机制的优点1代码重用,避免重复开发2增强一致性,统一的处理接口和界面3代码进化,高效的扩充功能为程序员提供了一种组织、构造和重用类的方法。,1.3面向对象程序设计的主要特点(续),继承的分类从继承源上分,继承分为单继承和多继承,窗口,对话框,玩具,车,玩具车,单继承多继承,1.3面向对象程序设计的主要特点(续),继承的分类从继承内容上分,继承分为取代继承、包含继承、受限继承和特化继承1取代继承子类覆盖了父类的内容2包含继承子类含有父类(的内容)3受限继承子类退化父类的内容4特化继承子类比父类有更多内容,1.3面向对象程序设计的主要特点(续),继承与封装的关系封装是继承的基础;继承是封装的发展,是为了更好的、更大规模的封装。继承和封装的相似性它们都提供了共享代码的手段:都是通过this指针来完成程序运行时的代码共享。,1.3面向对象程序设计的主要特点(续),3多态面向对象系统中,不同的对象收到相同的消息时产生多种不同行为方式的现象。C+语言支持两种多态性编译时多态性和运行时多态性C+中,编译时多态是通过重载实现的,而运行时多态是通过虚函数实现的。,1.3面向对象程序设计的主要特点(续),重载的概念重载是指用一个标志符(符号)来实现多个功能或行为的现象。重载包括函数重载和运算符重载函数重载使用同一个名字的多个函数定义。运

温馨提示

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

评论

0/150

提交评论