面向对象程序设计1汇总课件

上传人:我*** 文档编号:141980463 上传时间:2020-08-14 格式:PPT 页数:57 大小:328KB
返回 下载 相关 举报
面向对象程序设计1汇总课件_第1页
第1页 / 共57页
面向对象程序设计1汇总课件_第2页
第2页 / 共57页
面向对象程序设计1汇总课件_第3页
第3页 / 共57页
面向对象程序设计1汇总课件_第4页
第4页 / 共57页
面向对象程序设计1汇总课件_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《面向对象程序设计1汇总课件》由会员分享,可在线阅读,更多相关《面向对象程序设计1汇总课件(57页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计,(C+程序设计) 冯正全 Fzq_,面向对象程序设计基础,序:c的回顾与复习 一:从c到c+之非面向对象的扩充 二:类和对象,序: c的回顾与复习,一、c的变量、表达式与函数 二、c的指针 三、结构体,一、c的变量、表达式与函数,1、c的变量 所有变量在使用之前都必须先声明 所谓的变量声明其实就是告诉系统变量的大小 变量的类型可以是用户定义的,也可以是系统提供的。 C的变量类型包括: 字符型 短整型 整型 长整型 浮点型 双精度浮点型 长双精度浮点型,系统定义类型的大小,被定义在包含文件limit.h中,字符型 char char a; 短整型 short int short

2、 a; 整型 int int a; 长整型 long int long a; 浮点型 float float a; 双精度浮点型 double float double a; 长双精度浮点型 long double long double a;,每个变量在内存中占用的字节数,1,1,2,4,4,8,10,2、c的表达式,表达式是有值的c语句。大多数可执行的c语句是某种类型的表达式。 1)、子表达式:表达式由更小的子表达式用运算符连接起来构成。如下面的例子: int x; int y=2; x=5+2*y; 这个式子里,2*y是一个子表达式,2也是一个子表达式,y也是一个子表达式。除了值以外的表

3、达式都有自己的类型,y的类型是int,所以2*y的类型也是int。,2)、运算符,C的运算符分为算术运算符、位运算符、逻辑运算符、赋值运算符与其他运算符几种。 算术运算符:+、-、*、/、%、+、- 位运算符:、|、 逻辑运算符:!、 文件abs.c: int abs(int v) return v0?-(v):v; 文件other.c: #include “abs.h” main( ) int a,b=-1; a=abs(b); ,如果函数没有返回值,则应声明为void。如果没有声明,则缺省为int。,二、c的指针,1、定义、使用及意义 指针变量就是值为一个地址的变量。 main( ) lo

4、ng i; long *PI; PI= ,假设变量i的地址为0f312,变量PI的地址为0f316:,执行到PI= float j,*PJ; 如果i的地址为1A32,j的地址为1A36 则赋值语句PI=执行后,PI值1A32,PJ值1A36。 下面执行语句PI=PI+2;PJ=PJ+2; 执行后 PI= ; PJ= 。,1A36,1A3E,3、指针与数组,指针的增减量与数组变址有密切的联系。 int array10; int *pi; int i; pi= 则*(pi+i)与arrayi操作的是同一个数组元素。,三、结构体,C中的结构体与c+中的类非常类似。 1、定义和访问 使用关键字stru

5、ct定义自己的结构体类型。 例:定义struct stru1 int 1e; float 2e; ; 访问:struct stru1 one; one.1e=5; one.2e=1.5;,2、结构体指针,struct stru1 one; struct stru1 *pi; pi-1e=5; pi-2e=1.5 注意:-专用于访问指针所指向的结构体变量的成员。,第二部分:从c到c+之非面向对象的扩充,一、数据的I/O 1、I/O流 将数据从一个对象到另一个对象的流动抽象为“流”。 cin标准输入流 cout标准输出流 2、预定义的插入符和提取符 预定义的提取流运算符 cin表达式表达式,二、默

6、认参数的函数,C+允许在定义函数时给其中的某些或某个形参指定默认值,即在相应的形参后写上“=值”,这样当发生函数调用时,如果省略了对应位置上实参的值,则在被调函数执行时以默认值进行计算。 注意:1)默认参数一般在函数说明时提供; 2)如果一个函数中有多个默认参数,则默认参数应从右至左逐个定义。 如:void myfunc(int a=1,float b,long c=20);/错误 void myfunc(int a,float b=2.1,long c=20);/正确,函数默认参数的例子:,#include int sum(int i,int j=10); int sum(int i,int

7、 j) return (i+j); void main() int m=10,n=20; coutsum(m,n)endl; coutsum(m)endl; ,本例中定义了sum函数,其中形参j具有默认值10。由于本例中对函数sum进行了说明,所以参数j的默认值在函数说明中提供,而在定义函数时不允许再定义参数j的默认值。从程序的运行结果看,当未给第二个参数提供默认值时,该参数按默认值进行运算。,输出结果 30 20,(1) #include int func(int n=2); void main( ) coutfunc(1)“,”; coutfunc()“,”; coutfunc(3)end

8、l; int func(int n) int s=0; for(int i=1;i=3;i+) s=n*(1+s);,return s; (2) #include int add(int x,int y=8); void main() int x=3; coutadd(x)“,”; coutadd(x,add(add(x,add(x)endl; int add(int x,int y) return x+y;,例2:读程序并写出执行结果,三、内联函数,内联函数在编译时将函数体嵌入在每个调用语句处,不是在函数调用时候发生控制转移。 形式 inline type 函数名(型参类型表) 注意: 1、

9、内联函数体内不能有复杂的结构控制语句,如循环语句和switch,否则内联函数将和普通函数一样地被调用。 2、内联函数中不能定义数组。 3、内联函数的定义必须出现在第一次调用前 4、内联函数的调用方式与普通函数相同。,例:定义一个求两个整数中较小值的函数min(),要求定义成内联函数,然后在main函数中进行调用,#include inline int min(int x,int y) return (xy?x:y); void main() int m=10,n=20,t; t=min(m,n); cout“最小值:”t; ,从本例可以看出,内联函数只是在定义方法上与普通函数稍有不同,而在调用

10、方法上与普通函数一致。但从函数内部调用机理上看,在程序编译过程中,程序中遇到内联函数的地方,编译程序就把该函数的代码插入到调用处,然后再编译,因此调用内联函数的效率比较高。,四、函数重载,与c不同,c+中允许定义多个函数名相同,但形参表不同的函数。 进行函数调用时,系统可以依据实参的个数、类型、或顺序确定所调用的函数。 例如:void myfunc(int a,float b); void myfunc(float a,float b); 则 myfunc(1,1.0)调用的是 myfunc(1.0,1.0)调用的是 注意:重载函数间不能只是返回值不同。形参的个数、类型或顺序至少应该有一个不同

11、。,函数重载例:定义两个absolute函数分别用于求整型数据和双精度浮点数的绝对值。再定义两个min函数,分别用于求两个整型数和三个整型数中最小的一个。 #include int absolute(int x) return(x0?-x:x); double absolute(double x) return(x0?-x:x); int min(int x,int y) return (xy?x:y); int min(int x,int y,int z) int t; if(xy) t=x; else,t=y; if(tz) t=z; return (t); void main() int

12、 m=10,n=20,k=-10; double dl=-43.2; coutabsolute(k)endl; coutabsolute(dl)endl; coutmin(m,n)endl; coutmin(m,n,k)endl; ,程序中定义了两个absolute函数和两个min函数,这些函数虽然名称相同(即函数重载),但这些函数要么在参数的类型上有区别,要么在参数的个数上有区别,所以当发生函数调用时,程序会根据实参的类型和个数来调用相匹配的函数,因此程序执行结果为:,10 43.2 10 -10,五、const与指针,C+中可以用关键字const定义符号常量。 例如:const float

13、 pi=3.1415926; 既然是常量,在程序中就不能被另外赋值,并且必须在定义该符号常量的时候进行初始化: void main() const int i; i=30; ,错误:常量不能被赋值,错误:常量必须在定义的同时进行初始化,const与指针配合使用,衍生出3种不同的用法:,1、指向常量的指针:const 类型 *指针变量名 例如,const int *p; int a; p= 这时不能通过指针p改变a的值,但p可以指向另一个变量。,2、指针常量:,类型 *const 指针变量名=初始指针值 例如,char *const p=“abcde”; 这时指针p不能指向其他的变量,但是它指向

14、的字符串可以被修改。,3、指向常量的指针常量,定义方法:const 类型 *const 指针变量名=初始指针值 例如,int b; const int *const p= 这时指针p不能指向其他变量,也不能借助指针p修改变量b的值。,/错误,/错误,例2:指出程序中的错误并改正,(1) #include void main() const int i=100; const int *p; p=,cout void main() int a=10; int ,(4) #include void display(const int *a,int n); const int SIZE; void m

15、ain() SIZE=5; int arraySIZE; for(int i=0;iarrayi; display(array,SIZE); void display(const int *a,int n) for(int i=1;in;i+) ai=ai+3; coutai“ “; ,六、引用及声明方法,引用就是定义一个变量的别名。这样,对引用的操作就是对变量的操作。 引用的声明方法: 说明:1) int ,cout ,/定义引用ra,初始化成变量a,所以ra是变量a的引用(别名),/等价于coutaendl;,/等价于cout,/等价于coutaendl;,/等价于cout,/等价于a=b,/输出变量a所占存储单元的地址(指针),也可以定义对指针变量的引用,#include void main() int *a; int * ,/定义指针变量a,/定义引用p,初始化为指针变量a,所以p是a的引用(别名),/等价于a=,#include void cal(const char *p,int ,例2:若程序运行时输入This is funning并回车,问输出结果。,输出结果为15,第三部分:类和对

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号