欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c++讲义:第五章类和对象.ppt

    • 资源ID:79051385       资源大小:231.99KB        全文页数:37页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c++讲义:第五章类和对象.ppt

    第五章第五章 类和对象类和对象湖南商学院 信息系 曹伟本章内容:本章内容:类和对象的定义类和对象的定义 成员函数的特性成员函数的特性 静态函数静态函数 有元函数有元函数 类的作用域类的作用域 局部类和嵌套类局部类和嵌套类 对象的生存周期对象的生存周期5.1类的定义类的定义一一.类的概念类的概念 类是一种复杂的数据类型,它是将不同类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的运算封装类型的数据和与这些数据相关的运算封装在一起的集合体。类的结构是用来确定一在一起的集合体。类的结构是用来确定一类对象的行为,他们是通过类的内部数据类对象的行为,他们是通过类的内部数据结构和相关的运算来确定的。这些行为是结构和相关的运算来确定的。这些行为是通过一种运算接口来描述的,使用者关心通过一种运算接口来描述的,使用者关心的是接口的功能。的是接口的功能。二二.类的定义格式类的定义格式 1.组成:组成:说明部分和实现部分。说明部分和实现部分。2.定义格式:定义格式:class public :private:;3.举例:举例:1)所有成员函数都是在类中实现。所有成员函数都是在类中实现。class A private:int i;protected:int j;public:int k;int Geti()return i;int Getj()return j;int Getk()return k;2)成员函数在类体外定义成员函数在类体外定义 int A:Geti()return i;int A:Getj()return j;int A:Getk()return k;三三.定义时应注意定义时应注意:1.在类体中不允许对所定义的数据成员进行初始化。在类体中不允许对所定义的数据成员进行初始化。2.类中数据成员的类型可以是任意的。也可包含对象。同时另类中数据成员的类型可以是任意的。也可包含对象。同时另一个对象可以作为该类的成员。但自身类的对象是不可以的,一个对象可以作为该类的成员。但自身类的对象是不可以的,而自身类的指针或引用则是可以的。而自身类的指针或引用则是可以的。5.2 对象的定义对象的定义一一.对象的格式定义(对象的格式定义(在类说明之后在类说明之后)1.格式:格式:类名类名 对象表列;对象表列;2.举例:举例:A a1,a2,*p,*q;二二.对象成员的表示方法对象成员的表示方法 1.格式:格式:对象名对象名.成员名成员名 对象名对象名.成员函数名(参数表列)成员函数名(参数表列)对象指针名对象指针名-成员名成员名 或或 (*对象指针名)对象指针名).成员名成员名 2.举例:举例:a1.i a2.k p-i (*p).i a1.Geti()q-Getk()(*q).Getk()/score.h class Tscore private:float average;public:void Newscore(floar avg)average=avg;void Printscore()cout“AVE=”averageendl;/score.cpp#include#include“score.h”void main()Tscore s1,s2;s1.Newscore(75);s2.Newscore(82);cout“student1:”;s1.Printscore();cout“student2:”;s2.Printscore();5.3对象的初始化对象的初始化一一.构造函数和析构函数构造函数和析构函数 构造函数的功能是在创建对象时,使用给定的值构造函数的功能是在创建对象时,使用给定的值来将对象初始化。析构函数的功能是用来释放一个来将对象初始化。析构函数的功能是用来释放一个对象的,在对象删除前,用它来做一些清理工作,对象的,在对象删除前,用它来做一些清理工作,它与构造函数的功能正好相反。它与构造函数的功能正好相反。构造函数和析构函数都没有返回值,并且定义构造函数和析构函数都没有返回值,并且定义它们时不需要显示写没有返回值。构造函数可以带它们时不需要显示写没有返回值。构造函数可以带参数,可以重载;而析构函数不能有参数,也不能参数,可以重载;而析构函数不能有参数,也不能重载。重载。例:例:class COUNT int num;public:COUNT();COUNT();void process();COUNT :COUNT()num=0;COUNT COUNT()cout“字符的个数:字符的个数:”numendl;Void COUNT:process()while(getche()!=r)num+;coutendl;Void main()COUNT c;c.process();二二.带参数的构造函数带参数的构造函数 例:例:Point:Piont(int a,int b)x=a;y=b;三三.拷贝初始化构造函数拷贝初始化构造函数 功能:是用一个已知的对象来初始化一个被创功能:是用一个已知的对象来初始化一个被创建的同类的对象。它实质上也是构造函数,在初始建的同类的对象。它实质上也是构造函数,在初始化时被调用来将一个已知对象的数据成员的值拷贝化时被调用来将一个已知对象的数据成员的值拷贝给正在创建的另一个同类的对象。给正在创建的另一个同类的对象。例:例:class TAdd private:int x,y;public:Tadd(int a,int b)x=a;y=b;cout“fun1:”endl;TAdd(TAdd&p)x=p.x;y=p.y;cout“fun2:”endl;Tadd()cout“调用析构函数调用析构函数:”endl;Int add()return x+y;Void main()TAdd p1(2,3);TAdd p2(p1);Coutp2.add()endl;5.4成员函数的特性成员函数的特性一一.内联函数和外联函数内联函数和外联函数 内联函数是指那些定义在类体内的成员函数内联函数是指那些定义在类体内的成员函数,即即该函数的函数体在放在类体内。该函数的函数体在放在类体内。外联函数是说明在类体内,定义在类体外的成外联函数是说明在类体内,定义在类体外的成员函数叫外联函数。外联函数的函数体在类的实现员函数叫外联函数。外联函数的函数体在类的实现部分。外联函数要转化成内联函数只需要在函数头部分。外联函数要转化成内联函数只需要在函数头加上加上inline.inline.例:例:class TA private:int i;public :int add(int a,int b)return a+b;int geti();int TA:geti()return i;二二.重载函数重载函数#include class TAddpublic:int add(int a,int b)return a+b;double add(double x,double y)return x+y;void main()TAdd c;cout“s1=”c.add(2,3)endl;cout“s2=”c.add(2.5,3.3)endl;三三.设置函数的默认值设置函数的默认值#include Class Tcprivate:int A,B;public:Tc(int a=1,int b=2);int acount()return A;int bcount()return B;Tc:Tc(int a,int b)A=a;B=b;void main()Tc c1,c2(5),c3(10,20);coutc1.acountc1.bcountendl;coutc2.acountc2.bcountendl;coutc3.acountc2.bcountendl;5.5静态成员静态成员 静态成员的提出是为了解决数据共享的问题。静态成员的提出是为了解决数据共享的问题。在类中,静态成员分为静态成员和静态成员函数。在类中,静态成员分为静态成员和静态成员函数。一一.静态数据成员静态数据成员 静态数据成员是类的所有对象共享的成员,静态数据成员是类的所有对象共享的成员,而不是某个对象的成员,它可以供所有对象公用。而不是某个对象的成员,它可以供所有对象公用。1.定义:定义:static 数据类型数据类型 静态数据成员;静态数据成员;2.成员初始化:成员初始化:数据类型数据类型 类名:静态数据成员名类名:静态数据成员名=值;值;注意:注意:静态数据成员必须进行初始化。静态数据成员必须进行初始化。3.静态数据成员的引用静态数据成员的引用 类名:静态数据成员名类名:静态数据成员名#include Class Tc private:int I;static int k;public:Tc()I=0;I+;k+;void print()coutI“”kendl;int Tc:k=0;void main()Tc A,B;A.print();B.print();执行该程序的结果为:执行该程序的结果为:1 2 1 2二二.静态成员函数静态成员函数 和静态数据成员一样,它们都属于类的和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。故引用时静态成员,它们都不是对象成员。故引用时不需用对象名。不需用对象名。例:例:#include class Tc private:int A;static int B;public:Tc(int a)A=a;B+=a;Static void print(Tc C)cout“A=”C.A“B=”Bendl;int Tc:B=2;void main()Tc M(2),N(4);Tc:print(M);Tc:print(N);执行后的结果为:执行后的结果为:A=2B=8 A=4B=8 5.6 友元函数友元函数 友元可以是一个函数,也可以是一个类。有元友元可以是一个函数,也可以是一个类。有元的作用在于提高程序的运行效率,但是它破坏了类的作用在于提高程序的运行效率,但是它破坏了类的封装和隐藏性。的封装和隐藏性。一一.有元函数有元函数 友元函数的特点是能够访问类中的私有成员的友元函数的特点是能够访问类中的私有成员的非成员函数。从语法上看,在定义和调用上与普通非成员函数。从语法上看,在定义和调用上与普通函数一样函数一样。例:例:#include#include class Tpiont private :double x,y;public :Tpoint(double a,double b)x=a;y=b;friend double distance(Tpiont&a,Tpiont&b)return sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);void main()Tpiont p1(2,2),p2(5,5);cout“distance=”distance(p1,p2)endl;执行结果:执行结果:distance=4.24264二二.有元类有元类 当一个类作为另一个类的有元时,就意味着这个类当一个类作为另一个类的有元时,就意味着这个类的所有成员函数都是另一个类的有元函数。的所有成员函数都是另一个类的有元函数。#include#include class A private:int x;public:A()x=5;friend class B;clss B public:void print1(A m)m.x+;coutm.xendl;void print2(A m)m.x-;coutm.xendl;void main()A obj1;B obj2;obj2.print1(obj1);obj2.print2(obj1);执行结果:6 45.7局部类和嵌套类局部类和嵌套类一一.局部类局部类 在一个函数体内定义的类。在一个函数体内定义的类。例如:例如:int a;void fun()static int s;class A public:void Geti(int i)s=i;A m;m.Geti(8);在定义局部类时需要注意:局部类中不能说明静态成员函在定义局部类时需要注意:局部类中不能说明静态成员函数,并且所有成员函数都必须定义在类体内。数,并且所有成员函数都必须定义在类体内。二二.嵌套类嵌套类 在类中嵌套的类称为嵌套类,定义嵌套类的类称为外围类。在类中嵌套的类称为嵌套类,定义嵌套类的类称为外围类。例如:例如:class A public:class B public:.private:.;void f();private:int a;类类B是一个嵌套类,类是一个嵌套类,类A是外围类,类是外围类,类B定义在类定义在类A的类体内。的类体内。例如:例如:#include class student int no;char name10;class cdegree public:int chinese;int english;int phy;degree;public:void getdata()coutno;.cindegree.chinese;cindegree.english;void print()cout“学号:学号:”noendl;.coutdegree.chineseendl;void main()student st;st.getdata();st.print();5.9对象的生存周期对象的生存周期 对象的生存期是指对象从被创建开始到被释放为止的时间。对象的生存期是指对象从被创建开始到被释放为止的时间。按生存期的不同对象可分为如下三种:按生存期的不同对象可分为如下三种:1.局部对象:在程序体局部对象:在程序体 程序块中程序块中 2.静态对象:在一个文件中静态对象:在一个文件中 3.全局对象:整个文件的所有程序中全局对象:整个文件的所有程序中例如:例如:class A public:A(char *st);A();.;void fun()static A getdata();/静态成员静态成员 A object();全局对象全局对象 void main()a bin();局部对象局部对象 .

    注意事项

    本文(c++讲义:第五章类和对象.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开