c++02基础剖析

上传人:今*** 文档编号:107032817 上传时间:2019-10-17 格式:PPT 页数:36 大小:284.50KB
返回 下载 相关 举报
c++02基础剖析_第1页
第1页 / 共36页
c++02基础剖析_第2页
第2页 / 共36页
c++02基础剖析_第3页
第3页 / 共36页
c++02基础剖析_第4页
第4页 / 共36页
c++02基础剖析_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《c++02基础剖析》由会员分享,可在线阅读,更多相关《c++02基础剖析(36页珍藏版)》请在金锄头文库上搜索。

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

2、 ; const 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,方法二,用面向对象方法编程,求圆的周长和面积,分析,“圆”是抽象的类类型,建立具体的圆(对象),半径?,圆的周长 ? 面积 ?,实例化,O

3、bject Oriented,分析,圆类 数据成员 半径 成员函数 置半径值 求圆的半径 求周长 求面积,实例化,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 ; ;

4、void main( ) Circle 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(

5、) endl ; ,Circle类定义,数据成员,成员函数,建立对象 (类类型变量),通过对象 调用类的成员函数,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流对

6、象实现。 输入操作通过预定义输入流对象cin来实现, 输出操作通过预定义输出流对象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; 其中“称为插入运算符

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

8、ject Oriented,2.2 C+对C常规性能的扩充,2.作用域运算符 : 当全局变量与局部变量同名,而需要在函数内使用全局变量时,可以用作用域运算符:使用全局变量。 例【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 枚举类型名枚举列表枚举变量表 enu

9、m是枚举类型标识; 枚举列表中定义的枚举值对应着符号数字常量,其编号从0开始。 枚举变量可以放在以后需要变量时再定义。 C+语言中,定义枚举变量时,不必在枚举名前加标识符enum。,Object Oriented,2.2 C+对C常规性能的扩充,4.结构体类型 C+语言中,结构体一旦定义,就可以直接使用该结构体名定义变量,而不用在结构体名前加标识符struct。 C+语言把结构体看作类的特殊形式,即结构体是没有私有部分的类。 5.联合类型 同样,联合类型一旦定义,就可以直接使用该联合名定义变量,而不用在结构体名前加标识符union。,Object Oriented,2.2 C+对C常规性能的扩

10、充,6.const修饰符 (一)用const定义常量 基本数据类型 格式:const 类型 常量名=表达式; const 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常规性能的扩充, 常量与指针一

11、起使用 a、指向常量的指针 如:const char *name=”chen”; 表示定义一个指向常量”chen”的指针变量。即: 由于name是一变量,它可以指向另一常量。如可用:name=”stu”; 但常量的值不能改变。如不能使用:name2=i; b、常指针 如:char *const name=”chen”; 表示指针name是一个常量,它不能指向另一个字符串。 name=”stu”; 错误 name2=i; 字符串可以改变;,Object Oriented,c、指向常量的常指针 如: const char * const name=”chen”; 表示指针的指向不能改变,同时所指地

12、址中内容也不能改变。 如果用const定义一个整型常量,关键字int可以省略。,Object Oriented,2.2 C+对C常规性能的扩充,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. 函数名重载 函数名重载是指同一个作用域内多个函数可以拥有相同的名字。 函数名重载时,要求重载的函数至少在参数个

14、数或参数类型上与已定义的函数不同。 调用重载函数时,函数返回值类型不在参数匹配检查之列。 函数名重载时最好不要用缺省参数,否则可引起二义性。,Object 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=squa

15、re(b)endl; cout c*c=square(c)endl; ,2.2 C+对C常规性能的扩充,Object Oriented, 参数个数不同的重载 例【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=x

16、i; 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(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.0 func(80.0)

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

当前位置:首页 > 高等教育 > 大学课件

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