




免费预览已结束,剩余32页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章类和对象,湖南商学院信息系曹伟,本章内容:,类和对象的定义成员函数的特性静态函数有元函数类的作用域局部类和嵌套类对象的生存周期,5.1类的定义,一.类的概念类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的运算封装在一起的集合体。类的结构是用来确定一类对象的行为,他们是通过类的内部数据结构和相关的运算来确定的。这些行为是通过一种运算接口来描述的,使用者关心的是接口的功能。,二.类的定义格式1.组成:说明部分和实现部分。2.定义格式:classpublic:private:;,3.举例:1)所有成员函数都是在类中实现。classAprivate:inti;protected:intj;public:intk;intGeti()returni;intGetj()returnj;intGetk()returnk;,2)成员函数在类体外定义intA:Geti()returni;intA:Getj()returnj;intA:Getk()returnk;,三.定义时应注意:1.在类体中不允许对所定义的数据成员进行初始化。2.类中数据成员的类型可以是任意的。也可包含对象。同时另一个对象可以作为该类的成员。但自身类的对象是不可以的,而自身类的指针或引用则是可以的。,5.2对象的定义,一.对象的格式定义(在类说明之后)1.格式:类名对象表列;2.举例:Aa1,a2,*p,*q;二.对象成员的表示方法1.格式:对象名.成员名对象名.成员函数名(参数表列)对象指针名-成员名或(*对象指针名).成员名,2.举例:a1.ia2.kp-i(*p).ia1.Geti()q-Getk()(*q).Getk()/score.hclassTscoreprivate:floataverage;public:voidNewscore(floaravg)average=avg;voidPrintscore()cout“AVE=”averageendl;,/score.cpp#include#include“score.h”voidmain()Tscores1,s2;s1.Newscore(75);s2.Newscore(82);cout“student1:”;s1.Printscore();cout“student2:”;s2.Printscore();,5.3对象的初始化,一.构造函数和析构函数构造函数的功能是在创建对象时,使用给定的值来将对象初始化。析构函数的功能是用来释放一个对象的,在对象删除前,用它来做一些清理工作,它与构造函数的功能正好相反。构造函数和析构函数都没有返回值,并且定义它们时不需要显示写没有返回值。构造函数可以带参数,可以重载;而析构函数不能有参数,也不能重载。,例:classCOUNTintnum;public:COUNT();COUNT();voidprocess();,COUNT:COUNT()num=0;COUNTCOUNT()cout“字符的个数:”numendl;VoidCOUNT:process()while(getche()!=r)num+;coutendl;Voidmain()COUNTc;cess();,二.带参数的构造函数,例:Point:Piont(inta,intb)x=a;y=b;三.拷贝初始化构造函数功能:是用一个已知的对象来初始化一个被创建的同类的对象。它实质上也是构造函数,在初始化时被调用来将一个已知对象的数据成员的值拷贝给正在创建的另一个同类的对象。,例:classTAddprivate:intx,y;public:Tadd(inta,intb)x=a;y=b;cout“fun1:”endl;,TAdd(TAdd,5.4成员函数的特性,一.内联函数和外联函数内联函数是指那些定义在类体内的成员函数,即该函数的函数体在放在类体内。外联函数是说明在类体内,定义在类体外的成员函数叫外联函数。外联函数的函数体在类的实现部分。外联函数要转化成内联函数只需要在函数头加上inline.,例:classTAprivate:inti;public:intadd(inta,intb)returna+b;intgeti();intTA:geti()returni;,二.重载函数,#includeclassTAddpublic:intadd(inta,intb)returna+b;doubleadd(doublex,doubley)returnx+y;voidmain()TAddc;cout“s1=”c.add(2,3)endl;cout“s2=”c.add(2.5,3.3)endl;,三.设置函数的默认值,#includeClassTcprivate:intA,B;public:Tc(inta=1,intb=2);intacount()returnA;intbcount()returnB;Tc:Tc(inta,intb)A=a;B=b;voidmain()Tcc1,c2(5),c3(10,20);coutc1.acountc1.bcountendl;coutc2.acountc2.bcountendl;coutc3.acountc2.bcountendl;,5.5静态成员,静态成员的提出是为了解决数据共享的问题。在类中,静态成员分为静态成员和静态成员函数。一.静态数据成员静态数据成员是类的所有对象共享的成员,而不是某个对象的成员,它可以供所有对象公用。1.定义:static数据类型静态数据成员;,2.成员初始化:数据类型类名:静态数据成员名=值;注意:静态数据成员必须进行初始化。3.静态数据成员的引用类名:静态数据成员名,#includeClassTcprivate:intI;staticintk;public:Tc()I=0;I+;k+;voidprint()coutI“”kendl;intTc:k=0;,voidmain()TcA,B;A.print();B.print();执行该程序的结果为:1212,二.静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。故引用时不需用对象名。例:#includeclassTcprivate:intA;staticintB;public:Tc(inta)A=a;B+=a;,Staticvoidprint(TcC)cout“A=”C.A“B=”Bendl;intTc:B=2;voidmain()TcM(2),N(4);Tc:print(M);Tc:print(N);执行后的结果为:A=2B=8A=4B=8,5.6友元函数,友元可以是一个函数,也可以是一个类。有元的作用在于提高程序的运行效率,但是它破坏了类的封装和隐藏性。一.有元函数友元函数的特点是能够访问类中的私有成员的非成员函数。从语法上看,在定义和调用上与普通函数一样。,例:#include#includeclassTpiontprivate:doublex,y;public:Tpoint(doublea,doubleb)x=a;y=b;,frienddoubledistance(Tpiont执行结果:distance=4.24264,二.有元类当一个类作为另一个类的有元时,就意味着这个类的所有成员函数都是另一个类的有元函数。#include#includeclassAprivate:intx;public:A()x=5;friendclassB;,clssBpublic:voidprint1(Am)m.x+;coutm.xendl;voidprint2(Am)m.x-;coutm.xendl;voidmain()Aobj1;Bobj2;obj2.print1(obj1);obj2.print2(obj1);执行结果:64,5.7局部类和嵌套类,一.局部类在一个函数体内定义的类。例如:inta;voidfun()staticints;classApublic:voidGeti(inti)s=i;Am;m.Geti(8);在定义局部类时需要注意:局部类中不能说明静态成员函数,并且所有成员函数都必须定义在类体内。,二.嵌套类在类中嵌套的类称为嵌套类,定义嵌套类的类称为外围类。例如:classApublic:classBpublic:.private:.;voidf();private:inta;类B是一个嵌套类,类A是外围类,类B定义在类A的类体内。,例如:#includeclassstudentintno;charname10;classcdegreepublic:intchinese;intenglish;intphy;degree;public:voidgetdata()coutno;.cindegree.chinese;cindegree.english;voidprint()cout“学号:”noendl;.coutdegree.chineseendl;voidmain()studentst;st.getdata();st.print();,5.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市达人品牌培育-洞察与解读
- 年代沟通风格与工作适应-洞察及研究
- 电子支付法律法规-洞察及研究
- 多语言文本相似性度量模型探索-洞察及研究
- 神农文化中的中药养生观-洞察及研究
- 智能医疗设备集成-洞察及研究
- 肠道免疫屏障与肠道屏障功能的关系-洞察及研究
- 探讨智能餐桌如何满足老年人需求-洞察及研究
- GB/T 46183-2025鞋类化学试验方法含氯苯酚的测定气相色谱-串联质谱法
- 广东省深圳市文锦中学2026届数学九上期末调研试题含解析
- 养好小金鱼教学课件
- 2025年度社区工作者真题题库及答案
- 2025年9月 基孔肯雅热疫情防控工作的经验总结报告
- 2025年中国硅灰石超细粉市场调查研究报告
- 2025年幼儿园班级管理考试题及答案
- 鞘内药物输注技术
- 2025年物联网领域射频识别(RFID)技术创新与产业融合发展报告
- 2025年工会财务知识竞赛考试题库及参考答案
- 军队伤病员管理暂行办法
- 上海婚恋婚介培训课件
- 《中国高血压防治指南(2024年修订版)》解读课件
评论
0/150
提交评论