资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象程序设计习题,优秀精品课件文档资料,第1页,第1页,习 题 2,2-1-4:比较值调用和引用调用?,值调用是指发生函数调用时,给形参分派内存空间,并直接将实参值传递给形参。这一过程是参数单向传递过程,一旦形参取得了值便与实参脱离关系,此后不论形参发生了怎样改变,都不会影响到实参。,引用调用不为形参分派内存,在执行主调函数中调用语句时,系统自动用实参来初始化形参。形参是实参一个别名,对形参任何操作也就直接作用于实参。,传址是把实参地址传给形参,从而形参和实参同占一个内存空间,因此形参变实参也变;传值是实参把值赋值给形参,两个参数占有不同地址,因此实参不随形参改变而改变!,第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-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-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+),/,左右两斜边赋值,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=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 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 ,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页,第8页,#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页,第10页,习 题,3,3,-,1,填空题,(1),生存期与存储区域关系密切,普通存储区域分为代码区,(code area),、数据区域,(data area),、栈区,(stack area),和堆区,(heap area),。代码区用来存储,程序代码,,与其它存储区相相应生存期分别为,静态生存期,、,局部生存期,、,和,动态生存期,。,(2),局部变量普通含有,块,作用域,还也许含有,作用域;全局变量含有,文献,作用域。,(3),静态组员属于,类,,而不属于,对象,,它由同一个类所有对象共同维护,为这些对象所共享。静态函数组员能够直接引用该类,静态数据,和函数组员,而不能直接引用,非静态数据组员,。对于公有静态函数组员,能够通过,类名,或,对象名,来调用;而普通非静态函数组员只能通过对象名来调用。,(4),在实际程序设计中,一个源程序可划分为三个文献:,类申明文献,、,类实现文献,、,和,类使用文献,。,第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 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页,第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)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页,第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();/,显示计算器值,;,第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: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=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页,第20页,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页,第21页,(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页,第22页,(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页,第23页,(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页,第24页,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页,第25页,(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页,第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 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页,第28页,习题,4,4,-,1,填空题,(1),派生新类过程经历三个过程:,吸取基类组员,、,改造基类组员,和,添加新组员,。,(2),在类族中,直接参与派生出某类基类称为,直接基类,;基类基类甚至更高层基类称为,间接基类,。,(3),在继承中,假如只有一个基类,则这种继承方式称为,单继承,;假如基类名有多个,则这种继承方式称为,多继承,。,(4)C+,中运算符除了,类属关系运算符“,.”,、作用域分辨符“,:”,、组员指针运算符“*”、,sizeof,运算符和三目运算符“?:”,之外,所有能够重载,并且只能重载,C+,中已有运算符,不能臆造新运算符。,(5),假如用普通函数重载双目运算符,需要,1,个操作数;重载单目运算符,需要,0,个操作数。假如用友员函数重载双目运算符,需要,2,个操作数;重载单目运算符,需要,1,个操作数。,(6),当基类中某个组员函数被申明为虚函数后,此虚函数就能够在一个或多个派生类中被重新定义,在派生类中重新定义时,其函数原型,包括,返回类型,、,函数名,和,参数个数,,以及,参数类型,和,参多顺序,都必须与基类中原型完全相同。,第29页,第29页,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页,第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();,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;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),程序代码下列(课件例题):,考察:虚拟派生中结构函数执行顺序,#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 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页,第34页,(3),下列程序中,基类,base,和派生类,d1,、,d2,中都含有私有、保护和公有组员,,d1,类是,base,派生类,,d2,是,d1,派生类。试分析下列程序访问权限。,考察:继承中组员访问属性改变,第35页,第35页,#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页,第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,和,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页,第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,函数中:,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):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页,假如程序运营结果为:,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,类,私有派生,新矩形,Rectangle,类程序。请填空完毕程序,并上机运营验证。,第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 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 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.GetW(),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
展开阅读全文