c++03(2011)-1

上传人:luoxia****01813 文档编号:54944247 上传时间:2018-09-22 格式:PPT 页数:76 大小:722.50KB
返回 下载 相关 举报
c++03(2011)-1_第1页
第1页 / 共76页
c++03(2011)-1_第2页
第2页 / 共76页
c++03(2011)-1_第3页
第3页 / 共76页
c++03(2011)-1_第4页
第4页 / 共76页
c++03(2011)-1_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《c++03(2011)-1》由会员分享,可在线阅读,更多相关《c++03(2011)-1(76页珍藏版)》请在金锄头文库上搜索。

1、Object Oriented,面向对象技术与C+,计算机学院,Object Oriented,第三章 类和对象,本章主要介绍: 类和对象的基本概念(类的定义、对象的定义) 构造函数与析构函数(对象的初始化) 对象数组、对象指针及引用 向函数传递对象 静态成员 常量对象及常量成员 友元 名空间,Object Oriented,第一节 类和对象的基本概念,一、结构与类C+中的类实际上是在C语言的结构体的基础上扩充得到的。即C+的结构体的成员中可用函数成员函数: C+结构体的成员分为数据成员及成员函数 数据成员分为公有成员(public)、私有成员(private)、保护成员(protected)

2、。,Object Oriented,第一节 类和对象的基本概念,#include #include struct complex double real;double imag;void init(double r,double i) real=r;imag=i;double realcomplex( )return real;double imagcomplex( )return imag;double abscomplex( ) double t;t=sqrt(real*real+imag*imag);return t; ;, C+对结构的扩充 例【3.1】 已知复数的实部、虚部,分别输出

3、复数的实部、虚部及绝对值初步熟悉成员函数,Object Oriented,第一节 类和对象的基本概念,void main() complex A;A.init(3.0,4.0);cout “real of complex A=“;cout A.realcomplex()endl;cout “imag of complex A=“;cout A.imagcomplex()endl;cout “abs of complex A= “;cout A.abscomplex()endl; ,Object Oriented,第一节 类和对象的基本概念,C+结构的扩充: 在C+中,在定义一个结构时,可以定义

4、成员函数;如程序中的init( )、realcomplex( )、imagcomplex( )、abscomplex ( )等; 在C+的结构中,成员分公有成员(public)和私有成员(private),私有成员只能在结构内使用,公有成员既可以在结构内使用,亦可在其它地方使用; 在结构中,未指明为公有成员或私有成员的成员默认为公有成员; 成员函数的调用方法:结构变量.成员函数(实参表); 上例结构体的定义部分程序可改为:,Object Oriented,第一节 类和对象的基本概念,struct complex private:double real;double imag;public:vo

5、id init(double r,double i) real=r;imag=i;double realcomplex( ) return real;double imagcomplex( )return imag;double abscomplex( ) double t;t=sqrt(real*real+imag*imag);return t; ;,Object Oriented,第一节 类和对象的基本概念, C+对结构的扩充类 C+提供了一种比结构体更为安全的数据类型类。 类与结构的扩充形式非常相似,但凡是未定义为公有成员(public)或保护成员(protected)的成员均为私有成员

6、(private)封装性的体现。 例【3.2】将例【3.1】用类表示。,Object Oriented,第一节 类和对象的基本概念,#include #include class complex private:double real;double imag;public:void init(double r,double i) real=r;imag=i;double realcomplex( )return real;double imagcomplex( )return imag;double abscomplex( ) double t;t=sqrt(real*real+imag*im

7、ag);return t; ;,Object Oriented,第一节 类和对象的基本概念,void main() complex A;A.init(3.0,4.0);cout “real of complex A=“;coutA.realcomplex()endl;cout “imag of complex A=“;coutA.imagcomplex()endl;cout “abs of complex A= “;coutA.abscomplex()endl; ,Object Oriented,第一节 类和对象的基本概念, 类的声明(定义) 1、格式:,class 类名 private :私

8、有数据成员或成员函数public :公有数据成员或成员函数protected保护数据成员或成员函数 ;,Object Oriented,第一节 类和对象的基本概念,2、说明: 类的声明(定义)中,private、protected、public可以按任意顺序出现任意次;但通常private放在前面,protected放在中间,public放在最后面; 类中的数据成员通常说明为私有成员,而成员函数通常说明为保护成员或公有成员;,Object Oriented,第一节 类和对象的基本概念,例【3.3】定义一个日期类,其要求为: 设置年、月、日的具体值; 判断该年是否为闰年; 显示年、月、日 1、分

9、析 类名(抽象数据类型):Date 数据成员:用整型数year、month、 day表示年 、月、日; 成员函数(对Date的操作):setdate( ):设置日期isleapyear( ):判断是否为闰年printdate( ):显示日期,Object Oriented,第一节 类和对象的基本概念,2、类的定义,#include class Date private:int year,month,day;public:setdate(int y=2000,int m=1,int d=1)year=y;month=m;day=d;int isleapyear(void);void printd

10、ate(void)coutyear-month-dayendl; ; int Date:isleapyear(void) int p;p=(year%4=0 ,Object Oriented,第一节 类和对象的基本概念,3、类的测试(主函数),void main(void) Date da1,da2;da1.setdate(2004,5,1);da2.setdate(2006,10,1);da1.printdate();da2.printdate();cout“2004 year “;if(da1.isleapyear()cout“is a leap year.“endl;elsecout“i

11、s not a leap year.“endl;cout“2006 year “;if(da2.isleapyear()cout“is a leap year.“endl;elsecout“is not a leap year.“endl; ,Object Oriented,第一节 类和对象的基本概念, 成员访问限制 1、公有成员:public所定义的成员是开放的,可在任何地方访问(类内部及程序的其他地方); 2、私有成员:private 所定义的成员是隐藏的,只能在类内部访问,不能在程序的其他地方访问; 3、保护成员:protected 所定义的成员是半开放的,可在类内部访问,也可在其派生类

12、中访问,但不能在程序的其他部分访问。数据成员通常定义为私有成员,以实现数据的隐藏;成员函数通常设为公有的,以通过消息传递访问数据成员;保护成员主要用于继承。,Object Oriented,第一节 类和对象的基本概念,二、数据成员 1、一般定义格式:类型 数据成员名 2、说明 数据成员中,不能使用auto、register、extern等进行说明;(请思考为什么?); 定义类时,计算机并不给数据成员分配内存空间,在定义对象时才分配空间; 不能在定义时给类中的成员赋初值。(请思考为什么) 数据成员既可为基本数据类型,也可以是复杂数据类型(数组、指针、引用、结构体,也可以是类变量等),Object

13、 Oriented,第一节 类和对象的基本概念,三、成员函数 在面向对象程序设计中,成员函数也称方法是面向对象程序设计消息传递机制的实现方式。 在类外定义在类中只给出成员函数的原型,成员函数体在类的外部定义。 格式:返回类型 类名:函数名(形参表) 函数体 例【3.4】定义座标点的类point,Object Oriented,1、分析类名(抽象数据类型):Point数据成员:用实型数表示点的x、y坐标;成员函数(对Point的操作):set_point( ):设置点的坐标;read_x( ):读取x值;read_y( ):读取y值;move( ):点的移动; 2、类的定义,第一节 类和对象的基

14、本概念,Object Oriented,第一节 类和对象的基本概念,class point private:float x,y;public:void set_point(float a,float b);float read_x(void);float read_y(void);void move(float a,float b); ; void point:set_point(float a=0,float b=0)x=a ; y=b; float point:read_x(void) return x; float point:read_y(void) return y; void po

15、int:move (float a,float b) x+=a;y+=b;,Object Oriented,第一节 类和对象的基本概念,3、类的测试 将类的定义放在头文件hpoint.h中。再在main()测试。,#include #include“hpoint.h“ void main(void) point p1;p1.set_point(20,30);cout“x=“p1.read_x()endl;cout“y=“p1.read_y()endl;p1.move(5,5);cout“x=“p1.read_x()endl;cout“y=“p1.read_y()endl; ,Object Or

16、iented,第一节 类和对象的基本概念,说明 通常,当成员函数代码量较大时,在类外定义成员函数。 在定义成员函数以前一定要加上类名,类名与函数名间一定要用“:”; 成员函数中,应给出形参名,当无形参时,通常应加上void; 成员函数的返回类型,与函数原型中的返回类型必须相同。 成员函数与普通函数一样,可以设置参数的默认值,Object Oriented,第一节 类和对象的基本概念, 在类内部定义:将成员函数定义为内置函数 1、隐式定义:直接将函数直接定义在类的内部。如:,class point private :float x,y;public :void set_point(float a,float b) x=a ; y=b; float read_x( ) return x;float read_y( ) return y;void move (float a,float b) x+=a;y+=b;;,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 计算机等级考试

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