收藏 分销(赏)

面向对象程序设计与VC实践习题答案市公开课一等奖百校联赛优质课金奖名师赛课获奖课件.ppt

上传人:w****g 文档编号:11779222 上传时间:2025-08-13 格式:PPT 页数:85 大小:612.54KB 下载积分:18 金币
下载 相关 举报
面向对象程序设计与VC实践习题答案市公开课一等奖百校联赛优质课金奖名师赛课获奖课件.ppt_第1页
第1页 / 共85页
面向对象程序设计与VC实践习题答案市公开课一等奖百校联赛优质课金奖名师赛课获奖课件.ppt_第2页
第2页 / 共85页


点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,优异精品课件文档资料,1/85,习 题,2,2-1-4,:比较值调用和引用调用?,值调用是指发生函数调用时,给形参分配内存空间,并直接将实参值传递给形参。这一过程是参数单向传递过程,一旦形参取得了值便与实参脱离关系,今后不论形参发生了怎样改变,都不会影响到实参。,引用调用不为形参分配内存,在执行主调函数中调用语句时,系统自动用实参来初始化形参。形参是实参一个别名,对形参任何操作也就直接作用于实参。,传址是把实参地址传给形参,从而形参和实参同占一个内存空间,所以形参变实参也变,;,传值是实参把值赋值给形参,两个参数占有不一样地址,所以实参不随形参改变而改变,!,2/85,(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-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/85,#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-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/85,#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+),/,左右两斜边赋值,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/85,#include ,#define N 5,void main(),int i,j,aNN;,aNN=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/85,(8),将一个一维数组中相同元素删除到只保留一个,然后按由大到小次序输出。,#include,void main(),int a6=1,7,3,7,22,9;,int i,j,t,flag;,int 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/85,(8),字符数组,#include ,#include ,void 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/85,#include,void main(),int a10=1,2,1,4,1,6,9,6,7,6;,int i,j,t,flag,b10;,/,冒泡排序,for(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(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/85,习 题,3,3,-,1,填空题,(1),生存期与存放区域关系亲密,普通存放区域分为代码区,(code area),、数据区域,(data area),、栈区,(stack area),和堆区,(heap area),。代码区用来存放,程序代码,,与其它存放区相对应生存期分别为,静态生存期,、,局部生存期,、,和,动态生存期,。,(2),局部变量普通含有,块,作用域,还可能含有,作用域;全局变量含有,文件,作用域。,(3),静态组员属于,类,,而不属于,对象,,它由同一个类全部对象共同维护,为这些对象所共享。静态函数组员能够直接引用该类,静态数据,和函数组员,而不能直接引用,非静态数据组员,。对于公有静态函数组员,能够经过,类名,或,对象名,来调用;而普通非静态函数组员只能经过对象名来调用。,(4),在实际程序设计中,一个源程序可划分为三个文件:,类申明文件,、,类实现文件,、,和,类使用文件,。,11/85,3,-,3,阅读程序题,(1),以下是一个类中包含另一个类对象组员,(,类组合,),例子,试分析并给出以下程序运行结果。,12/85,#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 print(),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/85,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)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()“”;/,实现了输入次序与输出次序相反,coutn;,return 1;,分析:实现了输入次序与输出次序相反,17/85,3-4,完成以下程序,(1),下面是一个计算器类定义,请完成该类实现,(,组员函数定义,),,并在主函数中先将计算器给定初值,99,,然后进行二次加,1,,一次减,1,,最终显示计算器值。,class counter,int value;,public:,counter(int number);,/,结构函数,void increment();/,给原值加,l,void decrement();/,给原值减,1,int getvalue();/,取得计数值,void display();/,显示计算器值,;,18/85,#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:getvalue(),return value;,void counter:display(),coutvalue=valueendl;,void main(),counter counter1(99);,counter1.increment();/+,counter1.increment();/+,counter1.decrement();/-,counter1.display();,19/85,(2),以下程序接收若干用户姓名和电话,然后输出。,#include iostream.h,#include string.h,#include iomanip.h,const int N=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=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/85,3,-,5,编程题,(1),定义一个名为,rectangle,矩形类,其属性数据为矩形左上角和右下角点坐标,要求经过对该类对象调用计算矩形面积。,#include,#include,class Rectangle,int X1,Y1,X2,Y2;,public:,Rectangle(int x1,int 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/85,(2),定义一个名为,complex,复数类,其属性数据为复数实部和虚部,要求结构函数和拷贝结构函数,并定义组员函数打印复数值。,#include ,class complex/,复数类申明,double real;double imag;,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/85,(3),定义一个名为,circle,圆类,其属性数据为圆半径,定义组员函数计算圆面积。编写主函数计算一个内径和外径分别为,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/85,(4),试定义一个字符串类,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);,;,string:string(const char*str),length=strlen(str);contents=new charlength+1;,strcpy(contents,str);,24/85,void string:display()const/,显示,if(contents=0),coutempty.n;,else,cout,字符串内容为,contentsendl;,void string:getlength()/,获取长度,length=strlen(contents);,cout,字符串长度为,lengthendl;,void string:append(const 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/85,(5),编写一个程序:申明一个,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;,/,定义性说明,void main(),Cat f1;,Cat:Get_HowManyCat();,Cat f2;,f2.Get_HowManyCat();,f1.Cat();Cat:Get_HowManyCat();,26/85,(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 OutputList();/,链表结点输出,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,,,head=p;/,循环结束之后,,p,指向原来末结点,现在是头结点,return head;/,返回头结点,28/85,习题,4,4,-,1,填空题,(1),派生新类过程经历三个过程:,吸收基类组员,、,改造基类组员,和,添加新组员,。,(2),在类族中,直接参加派生出某类基类称为,直接基类,;基类基类甚至更高层基类称为,间接基类,。,(3),在继承中,假如只有一个基类,则这种继承方式称为,单继承,;假如基类名有多个,则这种继承方式称为,多继承,。,(4)C+,中运算符除了,类属关系运算符“,.”,、作用域分辨符“,:”,、组员指针运算符“*”、,sizeof,运算符和三目运算符“?:”,之外,全部能够重载,而且只能重载,C+,中已经有运算符,不能臆造新运算符。,(5),假如用普通函数重载双目运算符,需要,1,个操作数;重载单目运算符,需要,0,个操作数。假如用友员函数重载双目运算符,需要,2,个操作数;重载单目运算符,需要,1,个操作数。,(6),当基类中某个组员函数被申明为虚函数后,此虚函数就能够在一个或多个派生类中被重新定义,在派生类中重新定义时,其函数原型,包含,返回类型,、,函数名,和,参数个数,,以及,参数类型,和,参数次序,都必须与基类中原型完全相同。,29/85,4,-,3,阅读程序题,分析以下程序,写出运行结果,程序代码以下:,考查:继承关系,#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/85,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();,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/85,B,x1=-2,x2=-2,D1,x3=3,D2,x4=6,D2,x4=6,D2,x4=6,void main(),B b;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/85,(2),程序代码以下(课件例题):,考查:虚拟派生中结构函数执行次序,#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/85,class 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;,;,void 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/85,(3),以下程序中,基类,base,和派生类,d1,、,d2,中都含有私有、保护和公有组员,,d1,类是,base,派生类,,d2,是,d1,派生类。试分析以下程序访问权限。,考查:继承中组员访问属性改变,35/85,#include,class base,private:int n1;,protected: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;,;,36/85,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,和,k1,?,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(),fun2(),fun1(),37/85,(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,函数中:,coutn1k1endl;coutn2k2endl;,替换为,fun2();,38/85,(4),以下程序是一个相关,虚基类及其派生类初始化程序,。假如虚基类定义有非默认形式,(,即带形参,),结构函数,在整个继承结构中,直接或间接继承虚基类全部派生类,都必须在结构函数,组员初始化表,中列出对虚基类初始化。,39/85,#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):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)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服