收藏 分享(赏)

C++02基础.ppt

上传人:ysd1539 文档编号:7016707 上传时间:2019-05-01 格式:PPT 页数:35 大小:343KB
下载 相关 举报
C++02基础.ppt_第1页
第1页 / 共35页
C++02基础.ppt_第2页
第2页 / 共35页
C++02基础.ppt_第3页
第3页 / 共35页
C++02基础.ppt_第4页
第4页 / 共35页
C++02基础.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、Object Oriented,面向对象技术与C+,计算机学院,Object Oriented,第二章 C+基础,2.1 C+程序的结构特性例: 一个简单的C+程序,问题:输入圆的半径,求圆的周长和面积,数据描述: 半径,周长,面积均用实型数表示 数据处理:输入半径 r;计算周长 = 2*r ;计算面积 = pi * r2 ;输出半径,周长,面积;,Object Oriented,方法一,用结构化方法编程,求圆的周长和面积 / count the girth and area of circle #include void main ( ) double r, girth, area ; co

2、nst double pi = 3.1415 ;cout r ; girth = 2 * pi * r ; area = pi * r * r ;cout “radius = “ r endl ; cout “girth = “ girth endl ;cout “area = “ area endl ; ,数据描述,半径:r、周长:girth、面积:area,数据处理,输入数据,计算周长和面积,输出计算结果,Object Oriented,方法二,用面向对象方法编程,求圆的周长和面积,分析,“圆”是抽象的类类型,建立具体的圆(对象),半径?,圆的周长 ?面积 ?,实例化,Object Ori

3、ented,分析,圆类数据成员半径成员函数置半径值求圆的半径求周长求面积,实例化,Object Oriented,#include class Circle double radius ;public :void Set_Radius( double r ) radius = r ; double Get_Radius( ) return radius ; double Get_Girth( ) return 2 * 3.14f * radius ; double Get_Area( ) return 3.14f * radius * radius ; ; void main( ) Circl

4、e A, B ;A.Set_Radius( 6.23 ) ;cout “A.Radius = “ A.Get_Radius( ) endl ;cout “A.Girth = “ A.Get_Girth( ) endl ;cout “A.Area = “ A.Get_Area( endl ;B.Set_Radius( 10.5 ) ;cout “B.radius = “ B.Get_Radius( ) endl ;cout “B.Girth=“ B.Get_Girth( ) endl ;cout “B.Area = “ B.Get_Area( ) endl ; ,Circle类定义,数据成员,成

5、员函数,建立对象 (类类型变量),通过对象 调用类的成员函数,Object Oriented,2.1 C+程序的结构特性,一个面向对象的C+程序一般由两部分组成:面向对象程序:类的声明部分类的使用部分类的使用部分一般由主函数及相关子函数组成,Object Oriented,一、注释行在要注释的语句行前加标识符“/”。,2.2 C+对C常规性能的扩充,Object Oriented,2.2 C+对C常规性能的扩充,二、数据的输入/输出 C+语言没有专门的I/O语句,所有I/O是通过I/O库“iostream.h”提供的预定义I/O流对象实现。输入操作通过预定义输入流对象cin来实现,输出操作通过

6、预定义输出流对象cout来实现。 要使用cin和cout必须在程序的开头增加一行:#include,Object Oriented,预定义输入流对象cin,cin :可以直接输入基本数据类型的数据,包括整数、实数、字符和字符串。 格式:cin变量名1 变量名2变量名n,标准输入流对象,int a ; char s ; cin a s ;,Object Oriented,预定义输出流对象cout,作用:可直接输出基本数据类型的数据,包括整数、实数、字符及字符串。 格式:cout表达式1表达式2表达式n;其中“称为插入运算符,它将紧跟其后的表达式的值输出到显示器当前光标位置。,char c=a,b

7、=b;cout“c=“c“,b=“bendl;执行cout语句时,输出结果为:c=a,b=b,Object Oriented,三、变量C+具有灵活的变量声明。1. 块变量块:C+语言把用括起来的一块区域称为块。块变量:就是定义在某个块中的变量。块作用域:块变量的作用域就是该变量定义的由括起来的范围。,2.2 C+对C常规性能的扩充,Object Oriented,块作用域 标识符在一个函数的语句块内定义时,则它具有块作用域。 块作用域是从块内的定义处开始,直到该块结束(即所在复合语句的右花括号)为止,Object Oriented,2.2 C+对C常规性能的扩充,2.作用域运算符 :当全局变量

8、与局部变量同名,而需要在函数内使用全局变量时,可以用作用域运算符:使用全局变量。 例【2.6】,#include int avar=50; void main() int avar=20;avar=avar*5;:avar=:avar*3;cout“local avar=“avarendl;cout“public avar=“:avarendl; ,Object Oriented,2.2 C+对C常规性能的扩充,3.枚举类型枚举类型的一般形式是:enum 枚举类型名枚举列表枚举变量表 enum是枚举类型标识; 枚举列表中定义的枚举值对应着符号数字常量,其编号从0开始。 枚举变量可以放在以后需要

9、变量时再定义。 C+语言中,定义枚举变量时,不必在枚举名前加标识符enum。,Object Oriented,2.2 C+对C常规性能的扩充,4.结构体类型 C+语言中,结构体一旦定义,就可以直接使用该结构体名定义变量,而不用在结构体名前加标识符struct。 C+语言把结构体看作类的特殊形式,即结构体是没有私有部分的类。 5.联合类型同样,联合类型一旦定义,就可以直接使用该联合名定义变量,而不用在结构体名前加标识符union。,Object Oriented,2.2 C+对C常规性能的扩充,6.const修饰符(一)用const定义常量 基本数据类型格式:const 类型 常量名=表达式;c

10、onst float pi = 3.14159 ;或: 类型 const 常量名=表达式;说明:定义常量后,常量的值不能改变。 定义常量数组格式:const 类型 数组名元素个数=初值表;或: 类型 const 数组名元素个数=初值表 ;说明:定义常量数组后,数组元素的值不能改变。如:const int a10=1,2,3,4,5,6,7,8,9,10; 另外,结构体变量及对象也可定义为常量。,Object Oriented,2.2 C+对C常规性能的扩充, 常量与指针一起使用 a、指向常量的指针 如:const char *name=”chen”;表示定义一个指向常量”chen”的指针变量。

11、即:由于name是一变量,它可以指向另一常量。如可用:name=”stu”;但常量的值不能改变。如不能使用:name2=i; b、常指针 如:char *const name=”chen”;表示指针name是一个常量,它不能指向另一个字符串。 name=”stu”; 错误 name2=i; 字符串可以改变;,Object Oriented,c、指向常量的常指针如: const char * const name=”chen”;表示指针的指向不能改变,同时所指地址中内容也不能改变。 如果用const定义一个整型常量,关键字int可以省略。,Object Oriented,2.2 C+对C常规性能

12、的扩充,7. void型指针void型指针是一种通用型指针,任何类型的指针值都能赋给void类型的指针变量。 8.函数形式的类型转换任何系统定义的基本数据类型或用户自定义的数据类型的名字,都可作为函数使用,从而把变量(常量)从一种数据类型转换到另一种数据类型。例: int i=20;float x;x= float(i);,Object Oriented,四、函数1. 函数原型C+语言对函数参数作类型检查,它要求任何函数在使用之前,都必须有该函数的定义,并把这种函数定义称作函数原型。 函数原型的形式:返回类型 函数名(形参表); 程序中,要求一个函数的原型出现在该函数的调用语句之前,但当一个函

13、数的定义在前,而对它的调用在后时,一般就不必再单独给出它的原型了。,2.2 C+对C常规性能的扩充,Object Oriented,2.2 C+对C常规性能的扩充,函数定义与函数原型的区别:函数定义中参数必须给出名字,而且不包含结尾的分号。 主函数不必进行原型说明。,Object Oriented,2.2 C+对C常规性能的扩充,2. 函数名重载函数名重载是指同一个作用域内多个函数可以拥有相同的名字。 函数名重载时,要求重载的函数至少在参数个数或参数类型上与已定义的函数不同。 调用重载函数时,函数返回值类型不在参数匹配检查之列。 函数名重载时最好不要用缺省参数,否则可引起二义性。,Object

14、 Oriented,函数参数类型不同的重载 例【2.8】,#include int square(int x) return x*x; float square(float x) return x*x; double square(double x) return x*x; void main() int a=5;float b=10.0;double c=20.0;cout a*a=square(a)endl;cout b*b=square(b)endl;cout c*c=square(c)endl; ,2.2 C+对C常规性能的扩充,Object Oriented, 参数个数不同的重载 例

15、【2.9】,#include int max(int a,int b) int m;if (ab) m=a;else m=b;return m; int max(int a,int b,int c) int m;if (ab) m=a;else m=b;if (mc) m=c;return m; ,int max(int x ,int n) int i,m;m=x0;for(i=1;in;i+)if(mxi)m=xi;return m; void main() int a=10,b=20,c=15;int x5=20,40,30,50,35;cout max(a,b)endl;cout max

16、(a,b,c)endl;cout max(x,5)endl; ,2.2 C+对C常规性能的扩充,Object Oriented,2.2 C+对C常规性能的扩充,3.带缺省参数的函数C+在函数说明时,可以定义函数调用时的缺省参数。如:float func(float x=20.0,float y=30.0) 当调用该函数时:func(80.0,100.0); 调用时x=80.0 ,y=100.0func(80.0) 调用时x=80.0 , y=30.0func( ) 调用时 x=20.0 , y=30.0说明: 定义函数时,缺省参数必须在不缺省参数的右边; 如: float func(float

17、 x,float y=30.0) 调用带缺省参数的函数时,若省略某个参数,后面的参数必须都缺省。,Object Oriented,2.2 C+对C常规性能的扩充,4. 内联函数对于功能简单、代码短小、运行时间极短、频繁调用的函数,如何减少它的辅助时间? C语言通过定义宏来解决。 因宏存在副作用,故C+语言通过定义内联函数来解决。 内置函数的定义inline 数据类型 函数名(形参说明) inline void swap(int ,Object Oriented,注意: 内联函数必须在函数第一次出现时由inline指定; 内联函数代码不宜太大,原则上适宜于1-5行代码的小函数; 不能含有复杂的分

18、支或循环等语句; 递归调用的函数不能定义为内联函数。,#include const float pi=3.14; inline float area(float r) return pi*r*r; void main() float r,s;cout r;cout “s=“area(r)endl; ,Object Oriented,2.2 C+对C常规性能的扩充,五、new运算符及delete运算符 new运算符 格式1:指针变量=new 数据类型 功能:动态分配一块大小为“sizeof(数据类型)”字节大小的内存,并将其首地直赋值给指针变量。 格式2:指针变量=new 数据类型n 功能:动态

19、分配一块大小为“n*sizeof(数据类型)”字节大小的内存,并将其首地直赋值给指针变量。 delete运算符 格式1:delete p 格式2:delete p 功能:释放p所指向的内存区域,Object Oriented,例【2.1】,#include “iostream.h“ #include “stdlib.h“ void main() int i,n,*p;coutn;p=new intn;for(i=0;in;i+)pi=i+1;for(i=0;in;i+) if(i%5=0) coutendl;coutpi“ “;coutendl;delete p; ,Object Orient

20、ed,2.2 C+对C常规性能的扩充,六、引用及使用引用是给变量或对象取一个别名。 例【2.2】,#include “iostream.h“ void main() int i;int ,Object Oriented,2.2 C+对C常规性能的扩充,1、引用变量的定义 格式:数据类型 合法的定义)。,Object Oriented,3、引用测试 #include void main () int a = 2345 ;int *pa ;int ,Object Oriented,2.2 C+对C常规性能的扩充,引用的应用 1、用引用变量作为函数的形参 例【2.3】,#include void swap(int ,使用引用作为函数的形参时,主调函数的实参需要使用变量名。 函数调用时,将实参值传递给形参,实际上是被调用函数使用了实参的别名,因而形参的改变本质上就是对实参的改变。,Object Oriented,2.2 C+对C常规性能的扩充,2、引用作为函数的返回值 例【2.4】,#include “iostream.h“ const int N=100; float ,

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

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报