ImageVerifierCode 换一换
格式:PPTX , 页数:85 ,大小:625.89KB ,
资源ID:10117016      下载积分:16 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10117016.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(面向对象程序设计与VC实践习题答案市公开课金奖市赛课一等奖课件.pptx)为本站上传会员【丰****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

面向对象程序设计与VC实践习题答案市公开课金奖市赛课一等奖课件.pptx

1、单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑

2、母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式

3、第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第

4、三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,优秀精品课件文档资料,第1页,第1页,习 题 2,2-1-4:比较值调用和引用调用?,值调用是指发生函数调用时,给形参分派内存空间,并直接将实参值传递给形参。这一过程是参数单向传递过程,一旦形参取得了值便与实参脱离关系,此后不论形参发生了怎样改变,都不会影响到实参。,引用调用不为形参分派内存,在执行主调函数中调用语句时,系统自动用实参来初始化形参。形参是实参一个别名,对形参任何操作也就直接作用于实参。,传址是把实参地址传给形参,从而形参和实参同占一个内存空间,因此

5、形参变实参也变;传值是实参把值赋值给形参,两个参数占有不同地址,因此实参不随形参改变而改变!,第2页,第2页,(7),编写程序,打印下列杨辉三角形:,1,1 1,1 2 1,1 3 3 1,1 4 6 4 1,#include ,#include /#include ,void main(),int i,j,a55=1,;/,第一行第一列赋值,1,,其它为,0,for(,i=1,;i5;i+),ai0=1;/,第一列全置为,1,for(j=1;,j=i,;j+),aij=ai-1j-1+ai-1j;,/,每个数是上面两数之和,for(i=0;i5;i+)/,输出杨辉三角,coutsetw(5-

6、i);/for(j=0;j5-i;j+)printf();,for(j=0;,j=i,;j+)/,只输出,a55,下三角,coutsetw(2)aij;/printf(%2d,aij);,coutendl;,办法一,1,0,0,0,0,1,1,0,0,0,1,2,1,0,0,1,3,3,1,0,1,4,6,4,1,第3页,第3页,#include ,#include /#include ,void main(),int i,j,a55,;,for(,i=0,;i5;i+),ai0=1;,aii=1,;,/,第一列、对角全置为,1,for(j=1;,ji,;j+),aij=ai-1j-1+ai-

7、1j;,/,每个数是上面两数之和,for(i=0;i5;i+)/,输出杨辉三角,coutsetw(5-i);/for(j=0;j5-i;j+)printf();,for(j=0;,j=i,;j+)/,只输出,a55,下三角,coutsetw(2)aij;/printf(%2d,aij);,coutendl;,办法一变形,1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,第4页,第4页,#include ,void main(),int,a59,i,j;,for(i=0;i5;i+),for(j=0;j9;j+),aij=0;,/,所有元素赋值,0,for(i=0;i5;i+),/,左

8、右两斜边赋值,1,ai4-i=1;ai4+i=1;,for(i=2;i1;j-),aij=ai-1j-1+ai-1j+1;,for(i=0;i5;i+),for(j=0;,j9,;j+),if(aij=0)cout;,/,值为,0,元素输出为空格,elsecoutaij;,coutendl;,办法二,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,2,0,1,0,0,0,1,0,3,0,3,0,1,0,1,0,4,0,6,0,4,0,1,第5页,第5页,#include ,#define N 5,void main(),int i,j,aNN;,aNN=

9、1,1,1;,for(i=2;iN;i+),ai0=1;aii=1;,for(j=1;j=i;j+),aij=ai-1j-1+ai-1j;,for(i=0;iN;i+),for(j=0;j20-2*i;j+),printf();,for(int k=0;k=i;k+),printf(,%d,aik);,/,正确为:,printf(%4d,aik);,printf(n);,错误答案,第6页,第6页,(8),将一个一维数组中相同元素删除到只保留一个,然后按由大到小顺序输出。,#include,void main(),int a6=1,7,3,7,22,9;,int i,j,t,flag;,int

10、m=6,n;,n=m;,/n控制输出不同元素个数,/删除相同元素,for(i=0;im;i+),for(j=i+1;jn;j+),if(ai=aj),for(int k=j;kn;k+),ak=ak+1;/前移,n-;j-;,/,冒泡排序,for(i=0;in;i+),flag=0;,for(j=0;jn-i-1;j+),if(ajaj+1),t=aj;,aj=aj+1;,aj+1=t;,flag=1;,if(flag=0)break;,cout,排序后数组为:,n;,for(i=0;in;i+),cout ain;,第7页,第7页,(8),字符数组,#include ,#include ,v

11、oid main(),char a8,=agbbcc;,char t;int i,j;,for(i=0;i8;i+),for(j=0;ji;j+),if(ai,=,aj),ai=0,;,for(i=0;i8;i+),coutsetw(2)aiendl;,for(i=0;i8;i+),for(j=i+1;j8;j+),if(aiaj)t=ai;ai=aj;aj=t;,for(i=0;i8;i+)coutai,endl;,第8页,第8页,#include,void main(),int a10=1,2,1,4,1,6,9,6,7,6;,int i,j,t,flag,b10;,/,冒泡排序,for(

12、i=0;i10;i+),flag=0;,for(j=0;j10-i-1;j+),if(ajaj+1),t=aj;,aj=aj+1;,aj+1=t;,flag=1;,if(flag=0)break;,t=0;/,删除相同元素,for(i=0;i9-t;i+),if(ai=ai+1),for(j=i+1;j10-t;j+),aj-1=aj;,t+;,/,当相同元素多于,2,个时犯错,cout,排序后数组为:,n;,for(i=0;i10-t;i+),cout ain;,错误答案,/,删除相同元素,b0=a0;,j=0;,for(i=1;is1;,cins2;,coutcmps(s1,s2)cmps

13、s1,s2);,int cmps(char*p,char*q),for(;*p!=0p+,q+),if(*p!=*q)break;,return(*p-*q);,int cmps(char*p,char*q),for(;*p=*qp+,q+),;,return(*p-*q);,int cmps(char*p,char*q),while(*p=*q),p+;q+;,return(*p-*q);,第10页,第10页,习 题,3,3,-,1,填空题,(1),生存期与存储区域关系密切,普通存储区域分为代码区,(code area),、数据区域,(data area),、栈区,(stack area)

14、和堆区,(heap area),。代码区用来存储,程序代码,,与其它存储区相相应生存期分别为,静态生存期,、,局部生存期,、,和,动态生存期,。,(2),局部变量普通含有,块,作用域,还也许含有,作用域;全局变量含有,文献,作用域。,(3),静态组员属于,类,,而不属于,对象,,它由同一个类所有对象共同维护,为这些对象所共享。静态函数组员能够直接引用该类,静态数据,和函数组员,而不能直接引用,非静态数据组员,。对于公有静态函数组员,能够通过,类名,或,对象名,来调用;而普通非静态函数组员只能通过对象名来调用。,(4),在实际程序设计中,一个源程序可划分为三个文献:,类申明文献,、,类实现文献

15、和,类使用文献,。,第11页,第11页,3,-,3,阅读程序题,(1),下列是一个类中包括另一个类对象组员,(,类组合,),例子,试分析并给出下列程序运营结果。,第12页,第12页,#include,class Son,int age;,public:,Son()age=1;,Son(int i)age=i;,void print(),cout,儿子年龄是:,ageendl;,;,class Father,int age;,Son s1,s2;,/,类组合,public:,Father(int a1,int a2,int f),:s2(a2),s1(a1),age=f;,void pri

16、nt(),cout“,父亲年龄是:,ageendl;,Son&gets1(),cout,第一个,;return s1;,Son&gets2(),couts2.age)return 1;,else if(s1.age=s2.age)return 0;,else return-1;,;,(2),程序代码下列:,第14页,第14页,void main(),student stu=,student(,王红,18),student(,吴伟,19),student(,李丽,17),;,int i,min=0,max=0;,for(i=1;i3;i+),if(compare(stumax,stui)=-1)

17、max=i;,else if(compare(stumax,stui)=1)min=i;,cout,最大年龄:,stumax.get_age(),,姓名:,stumax.get_name()endl;,cout,最小年龄:,stumin.get_age(),,姓名:,stumin.get_name()prev,;int c=t-data;delete t;return c;,return 0;,main(),int c;stack s;,for(int j=0;jc;s.push(c);,for(j=0;j10;j+)/10,个整数出栈,,couts.pop()“”;/,实现了输入顺序与输出顺

18、序相反,coutn;,return 1;,分析:实现了输入顺序与输出顺序相反,第17页,第17页,3-4,完毕下列程序,(1),下面是一个计算器类定义,请完毕该类实现,(,组员函数定义,),,并在主函数中先将计算器给定初值,99,,然后进行二次加,1,,一次减,1,,最后显示计算器值。,class counter,int value;,public:,counter(int number);,/,结构函数,void increment();/,给原值加,l,void decrement();/,给原值减,1,int getvalue();/,取得计数值,void display();/,显示计

19、算器值,;,第18页,第18页,#include,class counter,int value;,public:,counter(int number);,void increment();/,给原值加,l,void decrement();/,给原值减,1,int getvalue();/,取得计数值,void display();/,显示计算器值,;,counter:counter(int number),value=number;,void counter:increment(),value+;,void counter:decrement(),value-;,int counter:

20、getvalue(),return value;,void counter:display(),coutvalue=valueendl;,void main(),counter counter1(99);,counter1.increment();/+,counter1.increment();/+,counter1.decrement();/-,counter1.display();,第19页,第19页,(2),下列程序接受若干用户姓名和电话,然后输出。,#include iostream.h,#include string.h,#include iomanip.h,const int N=

21、5;,class person,char name10;char num10;,public:,void getdata(,)strcpy(name,na);strcpy(num,nu);,void outdata(person pnN);,void person:outdata(,person pnN,),int i;,for(i=0;iN;i+)cout.width(10);,cout.width(10);,void main(),char*na5=li,zh,li,zh,li;,char*nu5=01,02,03,04,05;,person obj5;,/,对象数组,for(int i=

22、0;i5;i+)obji.getdata(nai,nui);,*pt=obj;,;,char*na,char*nu,或:,char na,char nu,coutpni.nameendl;,coutpni.numoutdata(pt);,或:,pt-outdata(obj);,第20页,第20页,3,-,5,编程题,(1),定义一个名为,rectangle,矩形类,其属性数据为矩形左上角和右下角点坐标,要求通过对该类对象调用计算矩形面积。,#include,#include,class Rectangle,int X1,Y1,X2,Y2;,public:,Rectangle(int x1,in

23、t y1,int x2,int y2),X1=x1;Y1=y1;X2=x2;Y2=y2;,int Area();,;,int Rectangle:Area(),return fabs(X2-X1)*(Y2-Y1);,void main(),Rectangle A(10,20,30,50);,cout,面积为,A.Area()endl;,第21页,第21页,(2),定义一个名为,complex,复数类,其属性数据为复数实部和虚部,要求结构函数和拷贝结构函数,并定义组员函数打印复数值。,#include ,class complex/,复数类申明,double real;double imag;,

24、public:,complex(double r=0.0,double i=0.0)/,结构函数,real=r;imag=i;,complex(complex&c)/,拷贝结构函数,real=c.real;imag=c.imag;,void display()/,显示复数值,cout“,实部为,:”real“,虚部为,:imagendl;,;,void main(),complex A;A.display();,complex B(2,3);B.display();,complex C(B);C.display();,第22页,第22页,(3),定义一个名为,circle,圆类,其属性数据为圆

25、半径,定义组员函数计算圆面积。编写主函数计算一个内径和外径分别为,5,和,8,圆环面积。,#include ,const float PI=3.14159;,/define PI 3.14159,class circle/,类申明,double radius;,public:,circle(double r=0.0)radius=r;/,结构函数,double area()return PI*radius*radius;,;,void main(),circle A(5);,circle B(8);,cout,圆环面积,B.area()-A.area()endl;,第23页,第23页,(4)试

26、定义一个字符串类string,使其最少含有内容(contents)和长度(length)两个数据组员,分别定义不同组员函数,用于显示字符串、求字符串长度、给原字符串后连接另一个字符串。,#include ,#include ,class string/,类申明,int length;char*contents;,public:,string()length=0;contents=0;,string(const char*str);/,结构函数,void display()const;/,显示值,void getlength();,void append(const char*tail);,;,

27、string:string(const char*str),length=strlen(str);contents=new charlength+1;,strcpy(contents,str);,第24页,第24页,void string:display()const/,显示,if(contents=0),coutempty.n;,else,cout,字符串内容为,contentsendl;,void string:getlength()/,获取长度,length=strlen(contents);,cout,字符串长度为,lengthendl;,void string:append(cons

28、t char*tail)/,连接,char*tmp;length+=strlen(tail);tmp=new charlength+1;,strcpy(tmp,contents);strcat(tmp,tail);,delete contents;contents=tmp;,void main(),string s0,s1(a string);s0.display();s1.display();s1.getlength();,string s2(this);s2.append(a string);,cout,连接,;s2.display();,第25页,第25页,(5),编写一个程序:申明一个

29、Cat,类,拥有静态数据组员,HowManyCats,,用以统计,Cat,个体数目;拥有静态组员函数,GetHowMany(),,用以存取,HowManyCats,。设计程序并测试这个类,体会静态数据组员和静态组员函数使用办法。,#include,class Cat,static int HowManyCat;,/,引用性阐明,public:,Cat(),HowManyCat+;,Cat()HowManyCat-;,static void Get_HowManyCat(),cout,总数,:HowManyCatendl;,;,int Cat:HowManyCat=0;,/,定义性阐明,voi

30、d main(),Cat f1;,Cat:Get_HowManyCat();,Cat f2;,f2.Get_HowManyCat();,f1.Cat();Cat:Get_HowManyCat();,第26页,第26页,(7),实现一单链表逆置,并输出逆置前后结果。,struct Node,int data;Node*next;,class List,Node*head;,public:,List()head=NULL;,void InsertList(int aData,int bData);/,链表结点插入,void DeleteList(int aData);/,链表结点删除,void O

31、utputList();/,链表结点输出,Node*Gethead()return head;,Node*reverse(Node*head);,;,void List:OutputList()/,链表输出函数,Node*current=head;,while(current!=NULL),coutdatanext;,cout next;/q,指向,2,号,while(q!=NULL),r=q-next;/r,指向,3,号,q-next=p;/2,号,next,指向,1,号,p=q;/p,指向,2,号,q=r;/q,指向,3,号,head-next=NULL;/1,号,next,指向,NULL

32、head=p;/,循环结束之后,,p,指向本来末结点,现在是头结点,return head;/,返回头结点,第28页,第28页,习题,4,4,-,1,填空题,(1),派生新类过程经历三个过程:,吸取基类组员,、,改造基类组员,和,添加新组员,。,(2),在类族中,直接参与派生出某类基类称为,直接基类,;基类基类甚至更高层基类称为,间接基类,。,(3),在继承中,假如只有一个基类,则这种继承方式称为,单继承,;假如基类名有多个,则这种继承方式称为,多继承,。,(4)C+,中运算符除了,类属关系运算符“,.”,、作用域分辨符“,:”,、组员指针运算符“*”、,sizeof,运算符和三目运算符

33、之外,所有能够重载,并且只能重载,C+,中已有运算符,不能臆造新运算符。,(5),假如用普通函数重载双目运算符,需要,1,个操作数;重载单目运算符,需要,0,个操作数。假如用友员函数重载双目运算符,需要,2,个操作数;重载单目运算符,需要,1,个操作数。,(6),当基类中某个组员函数被申明为虚函数后,此虚函数就能够在一个或多个派生类中被重新定义,在派生类中重新定义时,其函数原型,包括,返回类型,、,函数名,和,参数个数,,以及,参数类型,和,参多顺序,都必须与基类中原型完全相同。,第29页,第29页,4,-,3,阅读程序题,分析下列程序,写出运营结果,程序代码下列:,考察:继承关系,

34、include,class B,int x1,x2;,public:,void,Init,(int n1,int n2)x1=n1;x2=n2;,int inc1()return+x1;,int inc2()return+x2;,void disp()coutB,x1=x1,x2=x2endl;,;,第30页,第30页,class D1:B,int x3;,public:,D1(int n3)x3=n3;,void,Init,(int n1,int n2)B:Init(n1,n2);,int inc1()return B:inc1();,int inc2()return B:inc2();,

35、int inc3()return+x3;,void disp()coutD1,x3=x3endl;,;,class D2:public B,int x4;,public:,D2(int n4)x4=n4;,int inc1(),int temp=B:inc1();temp=B:inc1();temp=B:inc1();return B:inc1();,int inc4()return+x4;,void disp()coutD2,x4=x4endl;,;,第31页,第31页,B,x1=-2,x2=-2,D1,x3=3,D2,x4=6,D2,x4=6,D2,x4=6,void main(),B b

36、b.Init(-2,-2);b.disp();,D1 d1(3);d1.Init(5,5);d1.inc1();d1.disp();,D2 d2(6);d2.Init(-4,-4);,d2.B:disp();,d2.disp();,d2.inc1();d2.inc2();,d2.B:disp();,d2.disp();,d2.B:inc1();,d2.B:disp();,d2.disp();,B,x1=-2,x2=-2,D1,x3=3,B,x1=-4,x2=-4,D2,x4=6,B,x1=0,x2=-3,D2,x4=6,B,x1=1,x2=-3,D2,x4=6,第32页,第32页,(2),程

37、序代码下列(课件例题):,考察:虚拟派生中结构函数执行顺序,#include,class Level1,/,申明基类,Level1,public:,int n1;,Level1(int in_n1),n1=in_n1;coutThis is Level1,n1=n1endl;,;,class Level21:,virtual,public Level1,/Level1,为虚基类,派生类,Level21,public:,intn21;,Level21(int a):Level1(a),n21=a;coutThis is Level21,n21=n21endl;,;,第33页,第33页,class

38、 Level22:,virtual,public Level1,/Level1,为虚基类,派生类,Level22,public:,int n22;,Level22(int a):Level1(a),n22=a;coutThis is Level22,n22=n22endl;,;,class Level3:public Level21,public Level22,/,申明派生类,Level3,public:,int n3;,Level3(int a):Level1(a),Level21(a),Level22(a),n3=a;coutThis is Level3,n3=n3endl;,;,voi

39、d main(),Level3 obj(3);,/,定义,Level3,类对象,obj,This is Level1,n1=3,This is Level21,n21=3,This is Level22,n22=3,This is Level3,n3=3,程序运营结果为:,第34页,第34页,(3),下列程序中,基类,base,和派生类,d1,、,d2,中都含有私有、保护和公有组员,,d1,类是,base,派生类,,d2,是,d1,派生类。试分析下列程序访问权限。,考察:继承中组员访问属性改变,第35页,第35页,#include,class base,private:int n1;,prot

40、ected:int k1;,public:,base()n1=0;k1=1;,void fun1()coutn1k1endl;,class d1:public base,int n2;,protected:int k2;,public:,d1()n2=10;k2=11;,void fun2(),coutn1k1endl;,coutn2k2endl;,class d2:public d1,int n3;,protected:int k3;,public:,d2()n3=20;k3=21;,void fun3(),coutn1k1endl;,coutn2k2endl;,coutn3k3endl;,

41、第36页,第36页,void main(),base baseobj;,d1 d1obj;,d2 d2obj;,baseobj.fun1();,d1obj.fun2();,d2obj.fun3();,回答下列问题:,l,派生类,d1,中组员函数,fun2(),能否访问基类,base,中组员,fun1(),、,n1,和,k1,?,l,派生类,d1,对象能否访问基类,base,中组员,fun1(),、,n1,和,k1,?,l,派生类,d2,中组员函数,fun3(),能否访问直接基类,d1,中组员,fun2(),、,n2,和,k2,?能否访问基类,base,中组员,fun1(),、,n1,和,k

42、1,?,l,派生类,d2,对象能否访问直接基类,d1,中组员,fun2(),、,n2,和,k2,?能否访问基类,base,中组员,fun1(),、,n1,和,k1,?,以上程序有错,请更正,并上机验证。,private,protected,public,base,n1,k1,base(),fun1(),d1,n2,k2,d1(),fun2(),d2,n3,k3,d2(),fun3(),private,protected,public,base,n1,k1,base(),fun1(),d1,n2,k2,k1,d1(),fun2(),fun1(),d2,n3,k3,k2,k1,d2(),fun3(

43、),fun2(),fun1(),第37页,第37页,(1),能访问,base,中公有,fun1(),和保护,k1,,不能访问私有,n1,(2),能访问,base,中公有,fun1(),,不能访问,n1,和,k1,(3),能访问,d1,中公有,fun2(),和,k2,,不能访问私有,n2,能访问,base,中公有,fun1(),和,k1,,不能访问私有,n1,(4),能访问,d1,中公有,fun2(),,不能访问私有,n2,和,k2,能访问,base,中公有,fun1(),,不能访问私有,n1,和,k1,fun2,函数中:,coutn1k1endl;,替换为,fun1();,fun3,函数中:,

44、coutn1k1endl;coutn2k2endl;,替换为,fun2();,第38页,第38页,(4),下列程序是一个相关,虚基类及其派生类初始化程序,。假如虚基类定义有非默认形式,(,即带形参,),结构函数,在整个继承结构中,直接或间接继承虚基类所有派生类,都必须在结构函数,组员初始化表,中列出对虚基类初始化。,第39页,第39页,#include,class B1,public:,int n1;,B1(int in_n1)n1=in_n1;coutB1,n1=n1endl;,class B21:,virtual,public B1,public:,int n21;,B21(int a):

45、B1(a)n21=a;coutB21,n21=n21endl;,class B22:,virtual,public B1,public:,int n22;,B22(int a):B1(a)n22=a;coutB22,n22=n22endl;,class B3:public B21,public B22,public:,int n3;,B3(int a):B1(a),B21(a),B22(a)n3=a;coutB3,n3=n3endl;,void main(),B3 obj(5);,B1,n1=5,B21,n21=5,B22,n22=5,B3,n3=5,程序运营结果为:,第40页,第40页,假如

46、程序运营结果为:,B1,n1=5,B22,n22=5,B21,n21=5,B3,n3=5,上述程序应当怎么改?,假如将,B3(inta):,B1(a),B21(a),B22(a),n3=a;coutB3,n3=n3endl;,中,B21(a),和,B22(a),位置调换,程序运营结果是否会有改变?,class B3:public B21,public B22,改为,class B3:public B22,public B21,没有改变,初始化顺序与继承顺序相关,与初始化列表顺序无关,第41页,第41页,4,-,4,完毕下列程序,(1),下列程序是一个从,Point,类,私有派生,新矩形,Rec

47、tangle,类程序。请填空完毕程序,并上机运营验证。,第42页,第42页,class Rectangle:,private:,float W,H;,public:,void InitR(float x,float y,float w,float h),;W=w;H=h;,void Move(float xOff,float yOff),Point:Move(xOff,yOff);,float GetX()return Point:GetX();,float GetY()return Point:GetY();,float GetH()return H;,float GetW()return

48、W;,;,#include,#include,class Point,private:float X,Y;,public:,void InitP(float xx=0,float yy=0)X=xx;Y=yy;,void Move(float xOff,float yOff),;,float GetX()return X;,float GetY()return Y;,;,class Rectangle:,private:float W,H;,public:,void InitR(float x,float y,float w,float h),;W=w;H=h;,void Move(float

49、 xOff,float yOff)Point:Move(xOff,yOff);,float GetX()return Point:GetX();,float GetY()return Point:GetY();,float GetH()return H;,float GetW()return W;,;,第43页,第43页,void main(),Rectangle rect;,rect.InitR(2,3,20,10);,rect.Move(3,2);,coutThe data of rect(X,Y,W,H):endl;,coutrect.GetX(),rect.GetY(),rect.Ge

50、tW(),rect.GetH()endl;,程序运营结果为:,The data of rect(X,Y,W,H):,5,5,20,10,X+=xOff;Y+=yOff;,private Point,InitP(x,y);,第44页,第44页,(2),下列程序中申明一个圆类,circle,和一个桌子类,table,,另外申明一个圆桌类,roundtable,,它是由,circle,和,table,两个类派生,要求申明一个圆桌类对象,并输出圆桌高度、面积和颜色。请填空完毕程序,并上机运营验证。,第45页,第45页,class table,double height;,public:,table(d

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服