面向对象技术课件第三章.ppt

上传人:小飞机 文档编号:6613927 上传时间:2023-11-18 格式:PPT 页数:47 大小:232.66KB
返回 下载 相关 举报
面向对象技术课件第三章.ppt_第1页
第1页 / 共47页
面向对象技术课件第三章.ppt_第2页
第2页 / 共47页
面向对象技术课件第三章.ppt_第3页
第3页 / 共47页
面向对象技术课件第三章.ppt_第4页
第4页 / 共47页
面向对象技术课件第三章.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《面向对象技术课件第三章.ppt》由会员分享,可在线阅读,更多相关《面向对象技术课件第三章.ppt(47页珍藏版)》请在三一办公上搜索。

1、面向对象程序设计及C+,第三章 C+概述,计算机系,2,本章主要内容,C+源程序的构成C+在非面向对象方面的特点,3,2.2.1 C+程序的一般格式-简单C+程序示例,/Simple c+program 1.cpp#include void main()cout“Hello,world!”;,执行结果 Hello,world!,/Simple c+program sum.cppP20例3.1,4,C C+1、文件的扩展名 2、注释3、头文件 4、标准输出 5、标准输入,2.2.1 C+程序的一般格式-简单C+程序认识,流对象,运算符,5,2.2.2 C+程序的结构特性,体现面向对象的思想;构成

2、:示例程序:P20例3.1,主函数及有关子函数构成,6,2.2.3 C+程序编辑、编译和运行:,过程:同C语言常用C+版本带有C和C+两种编辑器:,如:Turbo C+、Borland C+、Visual C+、.NET,7,2.3 C+在非面向对象方面的特性,C+对C语言的扩充,非面向对象的新特性;面向对象的新概念。,自第四章起,本章内容,8,2.3.1 注释行,两种方式:/*/(注释一段)或/(注释一行),2.3.2 新的I/O流,流的概念预定义的流对象,数据由一个位置流向另一个位置,可以从流中提取数据或插入符数据。,cin 标准输入流,用来处理标准输入即键盘输入cout 标准输出流,用来

3、处理标准输出即屏幕输出,9,1、可以沿用传统stdio中的I/O函数;2、在使用标准流 cout/cin时,C+程序必须包含头文件 iostream.h;3、cin和、cout和要配对使用;,说明:格式:,1、输出:cout表达式表达式2,新的I/O流1:,10,、在输出语句中,可以串联多个插入符,输出多个数据项。、在插入运算符后面可以写任意复杂的表达式,系统会自动计算出它们的值并传给插入符。如:couta+bc;,格式:cout表达式表达式2 说明:,新的I/O流2:标准输出流,11,格式:cin表达式表达式2说明:,、在输入语句中,可以串联多个提取符,流表达式常常是获取输入值的变量。如:c

4、inabc;、提取符可以从输入流中读取一个字符序列,即字符串(以空白符结束的字符序列)P22例2.33、输入数据时,必须注意所输入数据的类型应与接受该数据之变量的类型相匹配,新的I/O流3:标准输入流,12,C:scanf(“%d”,cin num;cout“Enter new num:”;cout“The new num is:”num“n”;,C+:,新的I/O流4:实例说明:,13,新的I/O流5:,使用操纵符对输入输出格式进行控制,endl插入一个新行,作用等同于n,14,2.3.3 灵活的局部变量说明,随用随定义。体现灵活性,有利于节省时间,规定:与C的比较:,2.3.4 结构、联合

5、和枚举名可直接作类型名,在定义变量时,不必在结构、联合、枚举前冠以struct、union或enum,集中定义,说明:,15,2.3.5 const修饰符,定义常量(有数据类型);,功能:定义:示例:与C的比较,与#define命令作用相似,但消除其不安全性,因为#define无法准确地反映常量的数据类型。P26例3.3,const 类型定义符 变量名=初值;,const int sumValue=10;/常量定义,16,说明:举例:,const 与指针的结合,指向常量的指针常指针,const char*pc=“asdf”;/指向常量的指针pc3=a;/error,不能修改常量pc=“ghik

6、”;/right,可以指向另一个常量,说明:举例:,char*const pc=“asdf”;/常指针pc3=a;pc=“ghjk”;/error,pc是常指针,不能赋新值,将指针声明冠以const,使指向的对象为常量,将指针本身声明为常量,17,指向常量的常指针,const char*const cpc=“asdf”;cpc3=a;/error cpc=“ghik”;/error,指针本身不可改变,指向的对象也不可改变,说明:举例:,18,2.3.6 内置函数,定义:作用引入原因:,在函数说明前加关键字 inline,成为内置函数。,将函数体代码插入到函数调用处,消除函数调用时系统开销,提高

7、运行速度。,进栈、参数传递、调用、弹栈、返回,19,1、内置函数的定义必须出现在调用之前。2、与C中宏定义的比较3、内置函数体中不能有循环语句、条件语句、开关switch等控制流语句4、限制:一般将较短的函数定义为内置函数,说明:,相同:作用与机理类似;改进:消除#define的不安全因素,20,2.3.7 函数原型,要求:目的:格式:说明:,必须为每个函数建立原型,便于编译程序进行检查,从而确定函数调用的正确性,返回类型 函数名(参数表),P39,21,2.3.8 带默认参数的函数,要求:示例程序:,int add(int X,int Y)return X+Y;void main()add(

8、1,2);/正确,实参与形参个数与类型都匹配 add(1);/错误,实参与形参个数不匹配 add(1.1,2.2);/错误,实参与形参类型不匹配,大家回顾起来了吗?,回顾C语言对函数定义与调用的规则,实参与形参在个数与类型两方面都匹配,22,C+语言中的函数定义与调用的规则,int add(int X=3,int Y=4)return X+Y;void main()add(1,2);/正确,X=1,Y=2 add(1);/正确,X=1,Y=4 add();/正确,X=3,Y=4,大家知道这是什么函数吗?,改进:示例程序:,允许实参与形参在个数方面不相互匹配,但此时该函数应定义为带缺省形参值的函

9、数。,23,正确设置缺省形参值的方法:,在缺省形参值的右面不能有非缺省形参值定义。,int fun(int i,int j=5,int k=6);/正确int fun(int i,int j=5,int k);/错误(如fun(3,4))int fun(int i=1,int j,int k=6);/错误(如fun()),规定:示例:,调用规则:,调用时如给出实参,则采用实参值,否则采用预先定义出的默认形参值作为实参。,24,缺省形参值的摆放位置,先定义后使用。即若调用在定义之前,缺省形参值在函数的原型说明中给出;但若调用出现在定义之后,则在定义时给出。,int add(int X=5,int

10、 Y=6);void main(void)add();/调用在前 int add(int X,int Y)return X+Y;,int add(int X=5,int Y=6)return X+Y;/定义在前 void main(void)add();,规定:示例:,25,int add(int X,int Y)return X+Y;float add(float X,float Y)return X+Y;,注:“同一行为”不能使用同一名字标识,2.3.9 函数重载,回顾C语言:,要求:示例程序:,在同一个程序内不能出现同名函数。,26,允许将功能相近的函数共用一个函数名,形成同名不同形参定

11、义的重载函数。,int Add(int X,nt Y);float Add(float X,float Y);,C+语言中的重载函数,改进:优点:示例程序:,命名统一,减少对函数名的记忆。是实现C+中静态多态性的一种手段,即“同一行为”使用同一名字来标识。,27,C+编译器区分原则:,根据不同的参数类型、参数个数、参数顺序自动选择一个合适的函数。,对重载函数的要求,1、同名,但不同的形参定义(参数类型、参数个数、参数顺序),但不检查返回类型。2、说明:P33(2)-(3),28,2.3.10 作用域限定符:,#include iostream.hint X=1;void main()int X

12、=2;cout X;,输出的X值是“2”?(同名覆盖原则)但如果要输出全局变量X的值,怎么办?),回顾C语言:,要求:示例程序:,同一个程序中尽可能保持变量名的唯一性,最好不要同名。,29,访问在局部变量作用域中的同名全局变量。,#include iostream.hint X=1;void main()int X=2;cout local X=X;cout global X=:X;,C+语言中的全局作用域限定符::,功能:示例程序:,30,2.3.11 无名联合,C+中一种特殊联合,即在union后没有给出联合名,说明:,举例:,unionint i,float f;,注意:,可使用其中数据

13、项名字直接存取如上例i20;,31,2.3.12 强制类型转换,功能:,格式:,将一个表达式转换为所需类型,1、(类型名)(表达式)2、类型名(表达式),说明:,C支持第一种格式;C+支持两种格式,推荐第2种,举例:,int i=10;float x=(float)i;/或者float x=float(i);,32,2.3.13 C+中的new和delete,功能:使用形式:示例程序:P58例3.24,进行内存的分配和释放;,pnew type;,在内存中(数据堆中)分配一个sizeof(type)的内存单元,并返回该内存单元的地址,33,比较C语言的malloc()和free()函数,功能:

14、优点:,类似;,1、new自动计算要分配内存的类型大小;2、new自动返回正确的指针类型;3、new可以将分配的对象初使化;4、new与delete都可以被重载。,34,使用说明,为数组动态分配内存空间,char*ptr;ptr=new int10;,new可以为简单变量分配空间的同时,进行初使化;释放动态分配的数组存储区,使用如下格式:new分配内存失败,返回空指针NULLP58例3.24;New分配的空间只能用delete释放。,ptr=new int(10);,delete p;,35,注:区别如下两种不同的用法,int*ptr=new int(5);int*ptr=new int 5;

15、,大家知道其中的“5”各代表什么含义吗?,定义分配一个int 的内存单元并且赋初始值为5,然后返回该内存单元的地址到ptr中。,定义分配一个int 的数组,总计为5个元素,ptr指向该数组的起始地址。,36,2.3.14 引用,在不同的作用域内访问同一内存单元。,概念:作用:格式:示例程序:,变量的别名,数据类型&引用名已定义的变量名;,P59例3.25,37,说明(P59-63),在声明引用时必须对其初始化(1);对比C中指针(2):引用不能重新赋值(3);有些类型的数据无法建立引用(4-5):关于&运算符(6).,指针:通过地址间接访问变量;引用:通过别名直接访问变量。,38,void m

16、ain()int X=1;fun(X);void fun(int,引用作函数参数,示例程序:说明:,函数的形参为引用,则说明时不必要加以初始化,此时形参为实参的引用。,错误:void fun(int&a=1),39,#includevoid swap(int*m,int*n)int temp;temp=*m;*m=*n;*n=temp;void main()int a=5,b=10;swap(,大家知道两者的差别吗?,#includevoid swap(int,与C语言中指针作函数参数的比较:,40,引用作函数参数的优点,提高调用速度,因为只需要传送地址而不需要直接将大量数据拷贝,因而特别适用

17、于形参为大量数据的应用场合。,struct Data int a1000;AData;void fun(struct Data X),struct Data int a1000;AData;void fun(struct Data&X),改进为,41,将函数说明为返回一个引用。,引用返回值,方式:功能:说明:,使函数调用的表达式用于左值。,不能返回对该函数内的自动变量的引用,42,2.3.15 void型指针,说明:,举例:,一种通用型指针,即任何类型的指针值都可以赋给void类型的指针变量,void pa;/error,不能声明void型变量void*pc;int i=456;char c=

18、a;pc=,43,一、填空题:,1、C+中用来进行动态内存分配和释放的运算符是 1 和 2。2、常量标识符 3 可用来 修饰变量、函数参数、指针,经 4 修饰的“变量”,“变量”中存放的值在程序中不可改变。3、内置函数的定义需要在函数说明前加关键字 5。,二、看程序写结果:,void main()int x=100,y=200;p(,1、#include void p(int*a,int*b)int*t=a;a=b;b=t;,44,设计两个求面积的同名函数,一个用来求圆面积(传递一个参数),一个用来求矩形面积(需传递两个参数)。,void main()int x=100,y=200;p(x,y);coutxnyendl;,2、#include void p(int,三、编程题,45,本章作业,P64P673.5、3.7(写在书上)3.18、3.23、3.26(提交程序,文件名为a01.cPP,a02.cPP,a03.cPP),46,下节课内容:,类和对象上机内容:实验一:C+简单程序设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号