十章节类与对象一教学文案

上传人:yuzo****123 文档编号:137190423 上传时间:2020-07-05 格式:PPT 页数:36 大小:417.50KB
返回 下载 相关 举报
十章节类与对象一教学文案_第1页
第1页 / 共36页
十章节类与对象一教学文案_第2页
第2页 / 共36页
十章节类与对象一教学文案_第3页
第3页 / 共36页
十章节类与对象一教学文案_第4页
第4页 / 共36页
十章节类与对象一教学文案_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《十章节类与对象一教学文案》由会员分享,可在线阅读,更多相关《十章节类与对象一教学文案(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、2 类和对象 10.3 构造函数 和析构函数,类的说明,格式: class private: ; protected: ; public: ; ;,导言 10.1C+类的 构成 10.2 类和对象 10.3 构造函数 和析构函数,私有成员性质,可以是成员变量也可以是成员函数 只限于通过本类的成员函数来访问 当私有段成员位于类声明中的第一部分时,关键字private可以省略。,导言 10.1C+类的 构成 10.2 类和对象 10.3 构造函数 和析构函数,保护成员性质,可以是成员变量也可以是成员函数 可以在本类内和派生类内引用,不能在类外引用 关键字protected在任何情况下均不能省略,导

3、言 10.1C+类的 构成 10.2 类和对象 10.3 构造函数 和析构函数,公有成员性质,可以是成员变量也可以是成员函数 可在类内引用,也可以在类外(由对象)引用 提供了类的外部界面,即通过类的公有成员来访问这个类。 关键字public在任何情况下均不能省略,导言 10.1C+类的 构成 10.2 类和对象 10.3 构造函数 和析构函数,例2: class point private: float Xcoord,Ycoord; public: void SetX(float x) Xcoord=x; ; void SetY(float y) Ycoord=y; ; float GetX(

4、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.Ycoord=4.7; (错误) 见206页的解释,导言 10.1C+类的 构成 10.2 类和对象 10.3 构造函数 和析构函数,设置成员访问控制的作用,通过设置各

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

6、tring 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(char * conts) int i=0; contents=conts; while

7、 (*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); ,导

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

10、 string; int length; 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

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

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

14、1C+类的 构成 10.2 类和对象 10.3 构造函数 和析构函数,例7: class x / public: x();/不带参数的构造函数 x(int);/ x(int,char);/ x(float,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)析构函数,析构函数是类的特殊的成员函数,它的名字是前面加了一个符号“”的类名。析构函数没有任何参数,也无任何返回类型。,在删除对象自身之前,析构函数被调用来释放动态分配的且由指针对象

15、成员指向的存储。,导言 10.1C+类的 构成 10.2 类和对象 10.3 构造函数 和析构函数,例8: class x include class string int length; char * contents; public: string(char * 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 构造函数 和析构函数,课堂自习 P20

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

最新文档


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

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