




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,3.1类与对象概念的引入3.2类的声明3.3对象的声明3.4构造函数与析构函数3.4.1构造函数3.4.2析构函数3.5类的组合3.6静态成员3.6.1静态数据成员3.6.2静态成员函数,3.7友元3.7.1友元函数3.7.2友元类3.8常对象、常成员函数与常数据成员3.8.1常对象3.8.2常数据成员3.8.3常成员函数3.9类的作用域及对象的生存期3.9.1类作用域3.9.2对象生存期3.10面向对象标记,第3章类与对象,.,2,【3.1类与对象概念的引入】,.,3,类的声明形式如下:class类名public:若干成员;protected:若干成员;private:若干成员;,【3.2类的声明】,.,4,例3-1,.,5,public:/公有成员,声明类的外部接口voidsetcylinder(doubler,doubleh);/成员函数,用来设置圆柱体的半径和高doublegetradius();/成员函数,用来获取圆柱体的半径doublegetheight();/成员函数,用来获取圆柱体的高doublevolume();/成员函数,用来计算圆柱体的体积doublesurface_area();/成员函数,用来计算圆柱体的表面积private:/私有成员doubleradius;/数据成员,声明圆柱体的半径doubleheight;/数据成员,声明圆柱体的高;,.,6,例3-2,.,7,它的一般格式如下:返回值类型类名:成员函数名(参数表)函数体,例3-4,.,8,例3-5,.,9,doubleCylinder:surfacearea()doublearea;area=2*3.1415926*radius*height+2*3.1415926*radius*radius;returnarea;,例3-6,.,10,例3-7,.,11,例3-8,.,12,例如:Cylindercylinder1,cylinder2;,例如:Cylindercylinder110;,【3.3对象的声明】,.,13,例如:cylinder1.volume(),例如:Cylindercylinder1;cylinder1.radius=6.0;,例如:Aaobject;aobject.X=5;,私有成员只能被类内的成员函数访问。,.,14,例3-9,.,15,(续),.,16,(续),.,17,coutThesurfaceareaofthesecondcylinderis:tcylinder2.surface_area()endl;/计算对象cylinder2的表面积,并输出,(续),.,18,如:classA.classB.Aa;.;,.,19,如:classB;classApublic:voidfun(Bb);.;classB.;,.,20,classB;/引用性声明classApublic:voidfun(Bb);/正确private:Bb;/错误,类B尚未定义;voidA:fun(Bb)coutb.getx;/错误classB/声明类B,也即定义类Bpublic:voidsetx(inta)x=a;intgetx()returnx;private:intx;,例如:下面的使用方法就是错误的。,.,21,【3.4.1构造函数】,【3.4构造函数与析构函数】,.,22,doublegetradius();doublegetheight();doublevolume();doublesurface_area();private:doubleradius;doubleheight;;Cylinder:Cylinder()radius=5.0;height=10.0;,例3-11,.,23,doublegetradius();doublegetheight();doublevolume();doublesurface_area();private:doubleradius;doubleheight;;Cylinder:Cylinder(doubler,doubleh)radius=r;height=h;,例如:Cylindercylinder1(2.0,3.0);Cylindercylinder1;/错误,没有提供用于初始化的实参,(续),.,24,Cylindercylinder13=Cylinder(1.0,2.0),Cylinder(3.0,4.0),Cylinder(5.0,6.0);,例3-12,.,25,(续),.,26,(续),.,27,其形式如下:类名:类名(),(续),.,28,例3-13,.,29,/EXAMPLE3_13.CPP#includeEXAMPLE3_13.Hvoidmain()Aa;Ab(10,10);,【3.4.2析构函数】,.,30,例3-14,.,31,组合类的构造函数应定义成如下形式:类名:类名(形参表):对象1(形参表),对象2(形参表),对象n(形参表)函数体,【3.5类的组合】,.,32,例3-15,.,33,B()/析构函数coutclassBdestructingendl;private:intb;classCpublic:C(intx,inty):a1(y)/构造函数c=x;coutclassCconstructingwithoutobjectb1isnotevaluated;coutttcendl;C(intx,inta,intb);/构造函数C()/析构函数coutclassCdestructingendl;,(续),.,34,private:intc;Aa1;Bb1;/EXAMPLE315.CPP#includeEXAMPLE315.HC:C(intx,inta,intb):b1(a),a1(b)/定义构造函数c=x;coutclassCconstructingttcendl;voidmain()Cc1(2,3);coutObjectc1ofclassChasbeencreatedendl;Cc2(10,20,30);coutObjectc2ofclassChasbeencreatedendl;coutDestroythemendl;,(续),.,35,(续),.,36,classApublic:A(intx):a(x)coutclassAconstructingttaendl;A()coutclassAdestructingendl;private:inta;,例如,【例3-15】中类A的声明就可以改为如下形式:,.,37,【3.6.1静态数据成员】,【3.6静态成员】,.,38,例3-16,.,39,coutX=atY=bendl;voidgetSUM()sum=sum+a+b;coutSUM=sumendl;private:inta,b;staticintsum;intA:sum=0;/静态数据成员的定义/EXAMPLE3_16.CPP#includeEXAMPLE3_16.Hvoidmain()Aa1(1,2);a1.getXY();a1.getSUM();Aa2(3,4);a2.getXY();a2.getSUM();,(续),.,40,例如:#includeclassApublic:staticintx;intA:x=0;voidmain()coutA:xendl;A:x=10;coutA:xendl;,形式如下:类名:静态数据成员名,.,41,【3.6.2静态成员函数】,.,42,例3-17,.,43,intA:y=0;voidmain()Aa1(1,2);a1.fun1();/通过对象名访问A:fun2(a1);/通过类名访问Aa2(3,4);A:fun1();/通过类名访问a2.fun2(a2);/通过对象名访问,(续),.,44,【3.7.1友元函数】,【3.7友元】,.,45,例3-18,.,46,intx;/EXAMPLE3_18.CPP#includeEXAMPLE3_18.HvoidA:memberfun(intx)Bb(0)coutX=b.xendl;b.x=x;coutX=b.xendl;voidfun()Bb(10);coutX=b.xendl;voidmain()fun();Aa;a.memberfun(100);,(续),.,47,【3.7.2友元类】,.,48,例如:classApublic:A(inti,intj);.private:inta,b;A:A(inti,intj)a=i;b=j;Aconsta(1,2);constAb(3,4);,【3.8常对象、常成员函数与常数据成员】,.,49,【3.8.2常数据成员】,.,50,例3-19,.,51,【3.8.3常成员函数】,.,52,例3-20,.,53,coutInvoidA:getAB()constendl;coutA=atB=bM这样的表达式中,其中p是指向类A的一个对象的指针。,【3.9.1类作用域】,【3.9.2对象生存期】,【3.9类的作用域及对象的生存期】,.,55,例如:#includeinti=0;/变量i具有静态生存期,且具有文件作用域voidmain()couti=iendl;,1.静态生存期,.,56,例如:voidfun()staticintI=0;/变量I具有静态生存期,但其可见性是局部的.,2.动态生存期,.,57,例3-21,.,58,year=y;month=m;day=d;voidDate:setDate(inty,intm,intd)year=y;month=m;day=d;voidDate:showDate()constcoutyear年month月day日endl;Datedate1(2001,1,1);/date1具有静态生存期,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心理咨询中的心理档案管理试题及答案
- 药剂学基础试题及答案
- 育婴师考试通关秘籍试题及答案
- 药物疗效的客观评估考题及答案
- 药剂学人才培养与发展路径试题及答案
- 心理咨询师情感疏导的有效性研究试题及答案
- 药剂学的研究与应用动态考试试题及答案
- 系统架构设计师职业生涯规划试题及答案
- 激光实验设计试题及答案要点
- 育婴师儿童发展观察法试题及答案
- LOTO上锁挂牌培训资料课件
- DB63-T 1800-2020盐湖卤水矿堤坝工程施工技术规范
- 公路工程施工现场安全检查手册
- 初三任务型阅读公开课一等奖省优质课大赛获奖课件
- 财务会计费用原始凭证分割单
- 清淤工程施工记录表
- 矩阵理论讲义第四章内积空间
- 货物采购服务方案
- 初中英语 沪教牛津版 8B U6-1 Reading Head to head 课件
- GB∕T 20808-2022 纸巾
- 祖国不会忘记合唱谱(1)
评论
0/150
提交评论