第3讲类和对象优秀PPT.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第3讲类和对象优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第3讲类和对象优秀PPT.ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3讲类和对象讲类和对象现在学习的是第1页,共50页类的定义格式:类的定义格式:class 类名类名 private:成员数据成员数据;成员函数;成员函数;public:成员数据成员数据;成员函数;成员函数;protected:成员数据成员数据;成员函数;成员函数;;关键字关键字类名类名私有私有公有公有保护保护class Student private:char Name20;float Math;float Chiese;public:float average;void SetName(char*name);void SetMath(float math);void SetChinese
2、(float ch);float GetAverage(void);分号不能少分号不能少现在学习的是第2页,共50页C+有有三三种种访访问问控控制制属属性性:public表表示示成成员员是是公公 有有 的的,private表表 示示 成成 员员 是是 私私 有有 的的,protected表示成员是受保护的。表示成员是受保护的。缺缺省省情情况况下下,类类中中说说明明的的所所有有函函数数和和变变量量都都为为这个类所私有这个类所私有private。私有成员只能被私有成员只能被本类本类的成员函数访问。的成员函数访问。公公有有成成员员不不但但可可以以被被本本类类的的其其它它成成员员访访问问,还还可可以以
3、被程序中该被程序中该类以外的对象类以外的对象访问。访问。保保护护成成员员可可以以由由本本类类的的成成员员访访问问,也也可可以以由由本本类类的的派生类派生类的成员访问。的成员访问。类成员的访问控制类成员的访问控制现在学习的是第3页,共50页类成员的访问控制类成员的访问控制私有成员私有成员公有成员公有成员保护成员保护成员类内函数类内函数可以调用可以调用可以调用可以调用可以调用可以调用类外函数类外函数不可调用不可调用可以调用可以调用不可调用不可调用私有函数私有函数公有函数公有函数保护函数保护函数类内函数类内函数可以调用可以调用可以调用可以调用可以调用可以调用类外函数类外函数不可调用不可调用可以调用可
4、以调用不可调用不可调用现在学习的是第4页,共50页class A float x,y;public:void Setxy(float a,float b)x=a;y=b;void Print(void)coutxtyendl;xySetxy()Print()A私有数据私有数据公有函数公有函数在在类外不能直接使用类外不能直接使用 x 或或 y,必须通过,必须通过Setxy()给给 x 或或 y 赋值,通过赋值,通过Print()输出输出 x 或或 y。类成员的访问控制现在学习的是第5页,共50页在类体内定义成员函数在类体内定义成员函数类的成员函数类的成员函数class A float x,y;p
5、ublic:void Setxy(float a,float b)x=a;y=b;void Print(void)coutxtyendl;在类体内定义在类体内定义成员函数成员函数现在学习的是第6页,共50页class A float x,y;public:void Setxy(float a,float b);void Print(void);;void A:Setxy(float a,float b)x=a;y=b;void A:Print(void)coutxtyendl;在类体内说明成在类体内说明成员函数原型员函数原型在类体外定义在类体外定义成员函数成员函数在类体外定义成员函数在类体外定
6、义成员函数类的成员函数类的成员函数现在学习的是第7页,共50页 :()./函数体函数体在类体外定义成员函数的格式:在类体外定义成员函数的格式:void A:Setxy(float a,float b)x=a;y=b;函数类型函数类型类名类名函数名函数名形参列表形参列表函数体函数体类的成员函数类的成员函数现在学习的是第8页,共50页在在类类中中直直接接定定义义的的成成员员函函数数在在编编译译时时是是作作为为内内联联函函数数来实现的。来实现的。也也可可以以在在类类体体外外定定义义类类的的内内联联成成员员函函数数,在在类类体体外外定义时,在成员函数的定义前面加上关键字定义时,在成员函数的定义前面加上
7、关键字inlineinline。类的成员函数类的成员函数class A、float x,y;public:void Setxy(float a,float b);void Print(void);;inline void A:Setxy(float a,float b)x=a;y=b;inline void A:Print(void)coutxtyendl;现在学习的是第9页,共50页类和对象的关系相当于普通数据类型与其变量的关类和对象的关系相当于普通数据类型与其变量的关系,如:系,如:A ob1,ob2;在定义类时,只是定义了一种在定义类时,只是定义了一种数据类型数据类型,并不为类并不为类分
8、配存储空间。只有在定义了属于类的变量后,系统分配存储空间。只有在定义了属于类的变量后,系统才会为才会为类的变量类的变量分配空间。分配空间。建立对象时,只为对象分配用于保存数据成员的内存建立对象时,只为对象分配用于保存数据成员的内存空间,空间,而成员函数的代码为该类的每一个对象所而成员函数的代码为该类的每一个对象所共享共享。对象的定义及使用对象的定义及使用类名类名对象名对象名现在学习的是第10页,共50页class A float x,y;public:void Setxy(float a,float b )x=a;y=b;void Print(void)coutxtyendl;a1,a2;vo
9、id main(void)A a3,a4;定义全局对象定义全局对象定义局部对象定义局部对象对象的定义及使用对象的定义及使用现在学习的是第11页,共50页class A float x,y;public:float m,n;void Setxy(float a,float b )x=a;y=b;void Print(void)coutxtyendl;void main(void)A a1,a2;/定义对象定义对象 a1.m=10;a1.n=20;/为公有成员数据赋值为公有成员数据赋值 a1.Setxy(2.0,5.0);/为私有成员数据赋值为私有成员数据赋值 a1.Print();Print()
10、Setxy()a1nmyxPrint()Setxy()a2nmyx10202.05.0输出:输出:2 5对象的定义及使用对象的定义及使用对象成员的访问形式:对象名对象成员的访问形式:对象名.对象成员对象成员现在学习的是第12页,共50页用点运算符用点运算符“.”只能访问对象的只能访问对象的公有成员公有成员,不能访问,不能访问对象的私有成员或保护成员。对象的私有成员或保护成员。若要访问对象的私有的数据成员,只能通过对象的公若要访问对象的私有的数据成员,只能通过对象的公有成员函数来获取有成员函数来获取。见下例:见下例:对象的定义及使用对象的定义及使用现在学习的是第13页,共50页class A f
11、loat x,y;public:float m,n;void Setxy(float a,float b )x=a;y=b;void Print(void)coutxtyendl;void main(void)A a1,a2;a1.m=10;a1.n=20;/为公有成员数据赋值为公有成员数据赋值 a1.x=2;a1.y=5;a1.Setxy(2.0,5.0);a1.Print();必须通过类内公有函数必须通过类内公有函数访问私有数据成员访问私有数据成员非法,私有成员不能非法,私有成员不能在类外访问在类外访问现在学习的是第14页,共50页同类型的对象之间可以整体赋值,例:同类型的对象之间可以整体
12、赋值,例:#include class A float x,y;public:float m,n;void Setxy(float a,float b )x=a;y=b;void Print(void)coutxtyendl;void main(void)A a1,a2;a1.m=10;a1.n=20;/为公有成员数据赋值为公有成员数据赋值 a1.Setxy(2.0,5.0);a2=a1;a1.Print();a2.Print();couta2.m=a2.m a2.n=a2.nendl;对象的定义及使用对象的定义及使用现在学习的是第15页,共50页构造函数和析构函数构造函数和析构函数构造函数和
13、析构函数是在类体中说明的两种构造函数和析构函数是在类体中说明的两种特殊的成特殊的成员函数员函数。构造函数是在创建对象时,使用给定的值来将对构造函数是在创建对象时,使用给定的值来将对象初始化。象初始化。析构函数的功能正好相反,是在系统释放对象前,对析构函数的功能正好相反,是在系统释放对象前,对对象做一些善后工作对象做一些善后工作。构造函数构造函数可以带参数、可以重载可以带参数、可以重载,同时没有返回值。,同时没有返回值。构造函数是类的成员函数,系统约定构造函数名必须构造函数是类的成员函数,系统约定构造函数名必须与类名相同。与类名相同。现在学习的是第16页,共50页class A float x,
14、y;public:A(float a,float b)x=a;y=b;/构造函数,初始化对象构造函数,初始化对象 float Sum(void)return x+y;void Set(float a,float b)x=a;y=b;Print(void)coutx=xty=yendl;void main()A a1(2.0,3.0);/定义时调用构造函数初始化定义时调用构造函数初始化 A a2(1.0,2.0);a2.Set(10.0,20.0);/利用成员函数重新为对象赋值利用成员函数重新为对象赋值 a1.Print();a2.Print();现在学习的是第17页,共50页构造函数的函数名必
15、须与类名相同构造函数的函数名必须与类名相同。定义构造函数时,定义构造函数时,不能指定函数返回值的类型,也不不能指定函数返回值的类型,也不能指定为能指定为void类型类型。一个类可以定义若干个构造函数,进行一个类可以定义若干个构造函数,进行构造函数的重构造函数的重载。载。构造函数可以指定参数的缺省值。构造函数可以指定参数的缺省值。若定义的类要说明该类的对象时,构造函数必须是若定义的类要说明该类的对象时,构造函数必须是公有公有的成员函数的成员函数。如果定义的类仅用于派生其它类时,则。如果定义的类仅用于派生其它类时,则可将构造函数定义为可将构造函数定义为保护的成员函数保护的成员函数。构造函数构造函数
16、现在学习的是第18页,共50页class Afloat x,y;public:A(float a,float b=10)x=a;y=b;A()x=0;y=0;void Print(void)coutxtyendl;void main(void)A a1,a2(20.0),a3(3.0,7.0);a1.Print();a2.Print();a3.Print();带缺省参数的构造函数带缺省参数的构造函数不带参数的构造函数不带参数的构造函数每一个对象必须每一个对象必须要有相应的构造要有相应的构造函数函数现在学习的是第19页,共50页每一个对象必须要有相应的构造函数每一个对象必须要有相应的构造函数若没
17、有显式定义构造函数,系若没有显式定义构造函数,系统默认缺省的构造函数。统默认缺省的构造函数。class A float x,y;public:A()void Print(void)coutxtyendl;隐含的缺省的构造函数隐含的缺省的构造函数A a1,a2;只允许这样定义对象只允许这样定义对象对象开辟了空间,但没有初始化对象开辟了空间,但没有初始化现在学习的是第20页,共50页缺省的构造函数缺省的构造函数定义类时,若没有定义类的构造函数,则编译器定义类时,若没有定义类的构造函数,则编译器自动自动产产生一个缺省的构造函数,格式为:生一个缺省的构造函数,格式为:className:classNa
18、me()缺省的构造函数不对所产生对象的数据成员赋初值。缺省的构造函数不对所产生对象的数据成员赋初值。定义类时,定义类时,只要只要显式显式定义了一个类的构造函数,则编定义了一个类的构造函数,则编译器就不产生缺省的构造函数译器就不产生缺省的构造函数所有的对象在定义时,必须调用构造函数,所有的对象在定义时,必须调用构造函数,不存在不存在没有构造函数的对象!没有构造函数的对象!若定义了没有参数的构造函数,或各参数均有缺省值的若定义了没有参数的构造函数,或各参数均有缺省值的构造函数也称为缺省的构造函数,构造函数也称为缺省的构造函数,缺省的构造函数只能缺省的构造函数只能有一个。有一个。现在学习的是第21页
19、,共50页class Afloat x,y;public:A(float a,float b)x=a;y=b;void Print(void)coutxtyendl;void main(void)A a1;A a2(3.0,30.0);显式定义了构造函数,不产生显式定义了构造函数,不产生缺省的构造函数缺省的构造函数error,定义时,没有构定义时,没有构造函数可供调用造函数可供调用现在学习的是第22页,共50页class Afloat x,y;public:A(float a=10,float b=20)x=a;y=b;A()void Print(void)coutxtyendl;void m
20、ain(void)A a1;A a2(3.0,30.0);两个函数均为缺省两个函数均为缺省的构造函数的构造函数两个构造函数均可供调用,构造函数不唯一两个构造函数均可供调用,构造函数不唯一现在学习的是第23页,共50页构造函数与构造函数与new运算符运算符可以使用可以使用new运算符来运算符来动态地动态地建立对象。建立时建立对象。建立时要要自动调用构造函数自动调用构造函数,以便完成初始化对象的数据成,以便完成初始化对象的数据成员,最后返回这个动态对象的起始地址。员,最后返回这个动态对象的起始地址。用用new运算符产生的动态对象,在不再使用这种对象运算符产生的动态对象,在不再使用这种对象时,必须用
21、时,必须用delete运算符来释放对象所占用的存运算符来释放对象所占用的存储空间。储空间。用用new建立类的对象时,可以使用参数初始化动建立类的对象时,可以使用参数初始化动态空间。态空间。现在学习的是第24页,共50页class Afloat x,y;public:A(float a,float b)x=a;y=b;A()x=0;y=0;void Print(void)coutxtyPrint();pa2-Print();delete pa1;/用用delete释放空间释放空间 delete pa2;/用用delete释放空间释放空间现在学习的是第25页,共50页析构函数析构函数析构函数的作用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象 优秀 PPT
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内