类与对象一教学课件.ppt

上传人:小飞机 文档编号:6329501 上传时间:2023-10-17 格式:PPT 页数:36 大小:378.32KB
返回 下载 相关 举报
类与对象一教学课件.ppt_第1页
第1页 / 共36页
类与对象一教学课件.ppt_第2页
第2页 / 共36页
类与对象一教学课件.ppt_第3页
第3页 / 共36页
类与对象一教学课件.ppt_第4页
第4页 / 共36页
类与对象一教学课件.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《类与对象一教学课件.ppt》由会员分享,可在线阅读,更多相关《类与对象一教学课件.ppt(36页珍藏版)》请在三一办公上搜索。

1、第十讲 类与对象(一),导言10.1 C+类的构成10.2 类和对象10.3 构造函数和析构函数,类的概念是面向对象程序设计的核心概念,SP设计中以函数为程序的基本模块,OOP设计中以类作为程序的基本模块。,C+中通过class把数据以及对这些数据进行处理和运算的函数封装为互相关联的程序模块。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,C+中一个由数据成员和函数成员组成的类就是一种新的数据类型,对象就是类的实体,也就是相对应于新数据类型的变量。,C+由于引入了类,类具有继承机制,使得程序设计的可重用性大大提高。,导言10.1C+类的构成10.2 类和对象10.3

2、构造函数和析构函数,类的说明,格式:class private:;protected:;public:;,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,例1:class point private:int x,y;protected:void readpoint(int vx,int vy);public:void setpoint(int vx,int vy);,类成员包括私有成员、保护成员和公有成员,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,私有成员性质,可以是成员变量也可以是成员函数只限于通过本类的成员函数来访问当私有段成员位于类声

3、明中的第一部分时,关键字private可以省略。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,保护成员性质,可以是成员变量也可以是成员函数可以在本类内和派生类内引用,不能在类外引用关键字protected在任何情况下均不能省略,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,公有成员性质,可以是成员变量也可以是成员函数可在类内引用,也可以在类外(由对象)引用提供了类的外部界面,即通过类的公有成员来访问这个类。关键字public在任何情况下均不能省略,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,例2:class po

4、int private:float Xcoord,Ycoord;public:void SetX(float x)Xcoord=x;void SetY(float y)Ycoord=y;float GetX(void)return Xcoord;,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,float GetY(void)return Ycoord;int main()point p1,p2;p1.setX(3.5);p1.setY(4.7);p2.setY(p1.GetX);p2.setX(p1.GetY);return 0;,p1.Xcoord=3.5;p1.Y

5、coord=4.7;(错误)见206页的解释,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,设置成员访问控制的作用,通过设置各成员的私有性质和公有性质等,可以进行类成员的访问控制。例如通过将数据成员和函数成员设为私有,可以保证程序运行的安全性。把函数和它所处理的数据封装到一起,使得程序中大量的操作、运算、处理等得到最合理的划分,可以使程序模块的可重用性加强。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,成员函数的声明和实现,通常在类定义体中声明成员函数,而在别处实现它。在类中声明成员函数时,它所带的函数参量可以只指出其类型在类之外实现成员函

6、数时,必须在函数名之前缀上类名。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,例3:class string private:/可以省略 int length;/length和contents为私有成员 char*contents;public:/公有段开始 int set_contents(char*);/*在声明成员函数时,可以只指出参数类型*/int get_length();char*get_contents();,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,/具体成员函数的定义int string:set_contents(ch

7、ar*conts)int i=0;contents=conts;while(*conts+!=0)i+;length=i;return 1;,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,类与对象,类在概念上是一种抽象机制,它抽象了一类对象的存储和操作特性。,C+中,可以把具有相同内部存储结构的和相同一组操作的对象看成属于同一类。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,类与对象的关系可以用整型int和整型变量i之间的关系来类比。类和整型int均代表一般的概念,而对象和整型变量i却是代表具体的东西。,在指定一个类后,往往把属于这个类的对

8、象称为类的实例。实际上对象和实例表达的是一个意思。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,类的使用,使用一个类,实际上是创建一个此类的对象,之后使用它的公有成员来达到对此类对象作用的目的。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,例4:class point int x,y;public:void setpoint(int vx,int vy)x=vx;y=vy;void main()point p1;p1.setpoint(10,10);point*p2;p2=new point;p2-setpoint(10,10);,导言1

9、0.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,为了使用户定义的数据类型如同一般数据类型一样使用,需要在对象被定义时对对象初始化。构造函数和析构函数就是为此目的而设置的。,(1)构造函数,构造函数是类的一个特殊成员函数,它的函数名与类名相同,但不能具有返回类型。当创建一个对象时,系统自动调用构造函数,它完成类对象的初始化。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,构造函数的声明和定义,例5:class simplestring char string;int length;

10、public:simplestring;/声明构造函数;simplestring:simplestring()/构造函数对其私有变量赋初值 string=;length=0;,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,定义构造函数应注意的问题,构造函数名字必须与类名相同,否则编译程序将把它当作一般的成员函数来处理。,构造函数没有返回值,在声明和定义构造函数时是不能说明它的类型的。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,构造函数的功能是对对象进行初始化,因此在构造函数中只能对数据成员做初始化,这些数据成员一般为均为私有成员,在构造函

11、数中一般不做赋初值以外的事情。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,带参数的构造函数,前面介绍的构造函数是不带参数的,也就是对对象的初始化是固定的。,可以在构造函数中采用参数,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,例6:class set int elems100;int size;int card;public:set(int i=16);set:set(int i)size=i;,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数

12、,void main(void)set s1(64);set s2(16);set s3(8);,定义对象时必须传递参数,带缺省参数的构造函数,前面介绍的带参数的构造函数在定义对象时必须给带参数的构造函数传递参数,否则构造函数将不被执行。,在有些构造函数的使用中,只有特别的情况需要传递参数,一般都使用缺省值。,缺省参数并不只用于构造函数,一般的成员函数都可以使用缺省参数。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,例6:class point int x,y;public:point(int vx=0,int vy=0)x=vx;y=vy;/;void main(

13、void)point p1;/全部使用缺省值/*传递一个参数,使用一个缺省参数*/point p2(10);point p3(10,20);/传递两个参数,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,多构造函数,前面所介绍的构造函数都是在一个类中只具有一个,但有时在一个类中可以具有几个构造函数,这些构造函数之间以它们所带参数的个数或类型的不同而区分,实际上就是函数的重载。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,例7:class x/public:x();/不带参数的构造函数 x(int);/x(int,char);/x(float,

14、char);/;void main(void)x a;x b(1);x c(1,c);x d(3.5,d);,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,(2)析构函数,析构函数是类的特殊的成员函数,它的名字是前面加了一个符号“”的类名。析构函数没有任何参数,也无任何返回类型。,在删除对象自身之前,析构函数被调用来释放动态分配的且由指针对象成员指向的存储。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,例8:class xincludeclass string int length;char*contents;public:string(c

15、har*s);string();,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,string:string(char*s)if(s)length=strlen(s);/获取字符串的长度 contents=new charlength+1;/为字符串分配存储 strcpy(contents,s);else length=0;contents=0;,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,string:string()delete contents;/释放字符串contents所占的存储,main()char*p=“this is mine”;string mystring1(p);,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,课堂自习P202.7.1节栈类的设计。P212.程序program7-3.cpp。P213.程序program7-4.cpp。,导言10.1C+类的构成10.2 类和对象10.3 构造函数和析构函数,作业,思考题:2、3、8、9、12、13(书面),练习题:1、2、3、4(上机),

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号