《面向对象程序设计与VC实践习题答案.pptx》由会员分享,可在线阅读,更多相关《面向对象程序设计与VC实践习题答案.pptx(84页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1面向对象程序设计与面向对象程序设计与VC 实践习题答案实践习题答案n n(7)(7)编写程序,打印如下的杨辉三角形:编写程序,打印如下的杨辉三角形:n n 1 1n n 1 1 1 1n n 1 2 1 1 2 1n n 1 3 3 1 1 3 3 1n n 1 4 6 4 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
2、;/每个数是上面两数之和每个数是上面两数之和 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;方法一方法一1000011000121001331014641第1页/共84页#include#include /#include void main()int i,j,a55;for(i=0;i5;i+)ai0=1;aii=1;/第一列、对角全置为第一列、对角全置为
3、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;方法一变形方法一变形111121133114641第2页/共84页#include void main()int a59,i,j;for(i=0;i5;i+)for(j=0;j9;j+)aij=0;/所
4、有元素赋值所有元素赋值0for(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;方法二方法二000010000000101000001020100010303010104060401第3页/共84页n n(8)将一个一维数组中相同的元素删除到只保留一个,然后按由大到小的顺序输出。#include void main()i
5、nt 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+)c
6、out ain;第5页/共84页习习 题题3 n n3 3-1 1 填空题填空题n n(1)(1)生生存存期期与与存存储储区区域域关关系系密密切切,一一般般存存储储区区域域分分为为代代码码区区(code(code area)area)、数数据据区区域域(data(data area)area)、栈栈区区(stack(stack area)area)和和堆堆区区(heap(heap area)area)。代代码码区区用用来来存存放放 程程序序代代码码 ,与与其其他他存存储储区区相相对对应应的的生生存存期期分分别别为为 静静态态生生存存期期 、局局部生存期部生存期 、和和 动态生存期动态生存期 。
7、n n(2)(2)局局部部变变量量一一般般具具有有 块块 作作用用域域,还还可可能能具具有有 作作用用域域;全全局局变变量具有量具有 文件文件 作用域。作用域。n n(3)(3)静静态态成成员员属属于于 类类 ,而而不不属属于于 对对象象 ,它它由由同同一一个个类类的的所所有有对对象象共共同同维维护护,为为这这些些对对象象所所共共享享。静静态态函函数数成成员员可可以以直直接接引引用用该该类类的的 静静态态数数据据 和和函函数数成成员员,而而不不能能直直接接引引用用 非非静静态态数数据据成成员员 。对对于于公公有有的的静静态态函函数数成成员员,可可以以通通过过 类类名名 或或 对对象象名名 来来
8、调调用用;而而一一般般的的非非静静态态函数成员只能通过对象名来调用。函数成员只能通过对象名来调用。n n(4)(4)在在实实际际程程序序设设计计中中,一一个个源源程程序序可可划划分分为为三三个个文文件件:类类声声明明文文件件 、类实现文件类实现文件 、和和 类的使用文件类的使用文件 。第9页/共84页n n3-3 阅读程序题n n(1)以下是一个类中包含另一个类对象成员(类的组合)的例子,试分析并给出以下程序的运行结果。第10页/共84页#include class Son int age;public:Son()age=1;Son(int i)age=i;void print()cout儿子
9、的年龄是:儿子的年龄是: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()cout第二个第二个;return s2;void main()Father f(10,5,38);f.print();f.gets1().print();f.gets2().print();父亲的年
10、龄是:父亲的年龄是:38第一个儿子的年龄是:第一个儿子的年龄是:10第二个儿子的年龄是:第二个儿子的年龄是:5第11页/共84页n n#include#includen n#include#includen nclass studentclass studentn n char name10;char name10;n n int age;int age;n npublic:public:n nstudent(char in_name,int in_age)student(char in_name,int in_age)n n strcpy(name,in_name);strcpy(name,
11、in_name);age=in_age;age=in_age;n nint get_age()return age;int get_age()return age;n nchar*get_name()return name;char*get_name()return name;n nfriend int compare(student&s1,student&s2)friend int compare(student&s1,student&s2)n n if(s1.ages2.age)if(s1.ages2.age)return 1;return 1;n n else if(s1.age=s2.
12、age)else if(s1.age=s2.age)return 0;return 0;n n else return-1;else return-1;n n;(2)程序代码如下:程序代码如下:第12页/共84页n nvoid main()n nn n student student stu=stu=student(student(王王 红红,18),student(,18),student(吴吴 伟伟,19),student(,19),student(李李 丽丽,17),17);n n int i,min=0,max=0;n n for(i=1;i3;i+)n nif(compare(stu
13、max,stui)=-1)max=i;n nelse if(compare(stumax,stui)=1)min=i;n ncout最 大 年 龄:stumax.get_age()n n,姓名:stumax.get_name()endl;n ncout最 小 年 龄:stumin.get_age()n n,姓名:stumin.get_name()endl;n nn n程序运行结果为程序运行结果为:最大年龄:最大年龄:19,姓名:吴伟,姓名:吴伟最小年龄:最小年龄:17,姓名:李丽,姓名:李丽第13页/共84页n n#includen nclass stack;n nclass noden ni
14、nt data;n nnode*prev;n n public:n nnode(int d,node*n)data=d;prev=n;n nfriend class stack;n n;(3)下列程序实现的是堆栈的压入和弹出。其中有两个类,一个下列程序实现的是堆栈的压入和弹出。其中有两个类,一个是结点类,它包含结点值和指向上一结点的指针;另一个类是是结点类,它包含结点值和指向上一结点的指针;另一个类是堆栈类,数据成员为堆栈的头指针,它是结点类的友员。试分堆栈类,数据成员为堆栈的头指针,它是结点类的友员。试分析程序,并说明堆栈的压入和弹出过程。析程序,并说明堆栈的压入和弹出过程。第14页/共84
15、页n nclass stackclass stackn n node*top;node*top;n n public:public:n nstack()top=0;stack()top=0;n nvoid push(int i);void push(int i);int pop();int pop();n n;n nvoid stack:push(int i)void stack:push(int i)n n node*n=new node(i,top);node*n=new node(i,top);top=ntop=n;n nint stack:pop()int stack:pop()n n
16、 node*t=top;node*t=top;n n if(top)if(top)top=top-prevtop=top-prev;int c=t-data;delete t;return c;int c=t-data;delete t;return c;n n return 0;return 0;n n n nmain()main()n n n n int c;int c;stack s;stack s;n n for(int j=0;j10;j+)/10 for(int j=0;jc;cinc;s.push(c);s.push(c);n n for(j=0;j10;j+)/10 for(j
17、=0;j10;j+)/10个整数出栈,个整数出栈,n n couts.pop()“”;/couts.pop()“”;/实现了输入的顺序与输出的顺序相反实现了输入的顺序与输出的顺序相反n n coutn;coutn;n n return 1;return 1;n n 分析:实现了输入的顺序与输出的顺序相反分析:实现了输入的顺序与输出的顺序相反第15页/共84页n n3-4 完成下列程序n n(1)下面是一个计算器类的定义,请完成该类的实现(成员函数的定义),并在主函数中先将计算器给定初值99,然后进行二次加1,一次减1,最后显示计算器的值。n nclass counterclass counte
18、rn n n nint value;int value;n npublic:public:n ncounter(int number);counter(int number);/构造函数构造函数n nvoid increment();void increment();/给原值加给原值加l ln nvoid decrement();void decrement();/给原值减给原值减1 1n nint getvalue();int getvalue();/取取得得计计数值数值n nvoid display();void display();/显显示示计计算器值算器值n n;第16页/共84页#i
19、nclude class counterint value;public:counter(int number);void increment();/给给原值加原值加lvoid decrement();/给给原值减原值减1int getvalue();/取得计数值取得计数值void display();/显显示示计计算算器器值值;counter:counter(int number)value=number;void counter:increment()value+;void counter:decrement()value-;int counter:getvalue()return val
20、ue;void counter:display()coutvalue=valueendl;void main()counter counter1(99);counter1.increment();/+counter1.increment();/+counter1.decrement();/-counter1.display();第17页/共84页n n(2)下列程序接收若干用户的姓名和电话,然后输出。#include iostream.h#include string.h#include iomanip.hconst int N=5;class personchar name10;char n
21、um10;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,c
22、har*nu或:或:char na,char nu coutpni.nameendl;coutpni.numoutdata(pt);或:或:pt-outdata(obj);第18页/共84页n n3-5 编程题n n(1)定义一个名为rectangle的矩形类,其属性数据为矩形左上角和右下角点的坐标,要求通过对该类对象的调用计算矩形的面积。#include#include class Rectangleint X1,Y1,X2,Y2;public:Rectangle(int x1,int y1,int x2,int y2)X1=x1;Y1=y1;X2=x2;Y2=y2;int Area();i
23、nt Rectangle:Area()return fabs(X2-X1)*(Y2-Y1);void main()Rectangle A(10,20,30,50);cout面积为面积为A.Area()endl;第19页/共84页n n(2)定义一个名为complex的复数类,其属性数据为复数的实部和虚部,要求构造函数和拷贝构造函数,并定义成员函数打印复数的值。#include class complex/复数类声明复数类声明double real;double imag;public:complex(double r=0.0,double i=0.0)/构造函数构造函数 real=r;imag
24、=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();第20页/共84页n n(3)定义一个名为circle的圆类,其属性数据为圆的半径,定义成员函数计算圆的面积。编写主函数计算一个内径和外径分别为5和8的圆环的面积。#include cons
25、t float PI=3.14159;/define PI 3.14159class 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;第21页/共84页n n(4)试定义一个字符串类string,使其至少具有内容(contents)和长度(length)两个数据成员,分别定义不同的成员函数,
26、用于显示字符串、求字符串长度、给原字符串后连接另一个字符串。#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 charlen
27、gth+1;strcpy(contents,str);第22页/共84页void string:display()const/显示显示 if(contents=0)coutempty.n;elsecout字符串的内容为字符串的内容为contentsendl;void string:getlength()/获取长度获取长度length=strlen(contents);cout字符串的长度为字符串的长度为lengthendl;void string:append(const char*tail)/连接连接char*tmp;length+=strlen(tail);tmp=new charleng
28、th+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();第23页/共84页n n(5)编写一个程序:声明一个Cat类,拥 有 静 态 数 据 成 员HowManyCats,用以记录Cat的个体 数 目;拥 有 静 态 成 员 函 数 GetH
29、owMany(),用以存取HowManyCats。设计程序并测试这个类,体会静态数据成员和静态成员函数的用法。#include class Catstatic 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.
30、Cat();Cat:Get_HowManyCat();第24页/共84页n n(7)实现一单链表的逆置,并输出逆置前后的结果。struct Node int data;Node*next;class ListNode*head;public:List()head=NULL;void InsertList(int aData,int bData);/链表结点的插入链表结点的插入void DeleteList(int aData);/链表结点的删除链表结点的删除void OutputList();/链表结点的输出链表结点的输出Node*Gethead()return head;Node*rever
31、se(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
32、 head;/返回头结点返回头结点 第26页/共84页习题习题4 n n4 4-1 1 填空题填空题n n(1)(1)派派生生新新类类的的过过程程经经历历三三个个过过程程:吸吸收收基基类类成成员员、改改造造基基类类成成员员和和添加新的成员添加新的成员。n n(2)(2)在在类类族族中中,直直接接参参与与派派生生出出某某类类的的基基类类称称为为直直接接基基类类;基基类类的的基基类甚至更高层的基类称为类甚至更高层的基类称为间接基类间接基类。n n(3)(3)在在继继承承中中,如如果果只只有有一一个个基基类类,则则这这种种继继承承方方式式称称为为 单单继继承承 ;如果基类名有多个,则这种继承方式称为
33、如果基类名有多个,则这种继承方式称为 多继承多继承 。n n(4)(4)C+C+中中的的运运算算符符除除了了类类属属关关系系运运算算符符“.”.”、作作用用域域分分辨辨符符“:”:”、成成员员指指针针运运算算符符“*”“*”、sizeofsizeof运运算算符符和和三三目目运运算算符符“?:”之之外外,全全部部可可以以重重载载,而而且且只只能能重重载载C+C+中中已已有有的的运运算算符符,不不能能臆臆造造新新的的运算符。运算符。n n(5)(5)如如果果用用普普通通函函数数重重载载双双目目运运算算符符,需需要要 1 1 个个操操作作数数;重重载载单单目目运运算算符符,需需要要 0 0 个个操操
34、作作数数。如如果果用用友友员员函函数数重重载载双双目目运运算算符符,需需要要 2 2个操作数;重载单目运算符,需要个操作数;重载单目运算符,需要 1 1 个操作数。个操作数。n n(6)(6)当当基基类类中中的的某某个个成成员员函函数数被被声声明明为为虚虚函函数数后后,此此虚虚函函数数就就可可以以在在一一个个或或多多个个派派生生类类中中被被重重新新定定义义,在在派派生生类类中中重重新新定定义义时时,其其函函数数原原型型,包包括括返返回回类类型型、函函数数名名和和参参数数个个数数,以以及及参参数数类类型型和和参参数数的的顺序顺序都必须与基类中的原型完全相同。都必须与基类中的原型完全相同。第27页
35、/共84页n n4-3 阅读程序题n n分析下列程序,写出运行结果(1)(1)程序代码如下:n n考察:继承关系#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;第28页/共84页n nclass D1:Bclass D1:Bn n int x3;int x3;n n public:public:n nD1(int n3)x3=n3;D1(int n3)x3=n
36、3;n nvoid void InitInit(int n1,int n2)B:Init(n1,n2);(int n1,int n2)B:Init(n1,n2);n nint inc1()return B:inc1();int inc1()return B:inc1();n nint inc2()return B:inc2();int inc2()return B:inc2();n nint inc3()return+x3;int inc3()return+x3;n nvoid disp()coutD1,x3=x3endl;void disp()coutD1,x3=x3endl;n n;n n
37、class D2:public Bclass D2:public Bn n int x4;int x4;n n public:public:n nD2(int n4)x4=n4;D2(int n4)x4=n4;n nint inc1()int inc1()n n int temp=B:inc1();temp=B:inc1();temp=B:inc1();return B:inc1();int temp=B:inc1();temp=B:inc1();temp=B:inc1();return B:inc1();n nint inc4()return+x4;int inc4()return+x4;n
38、 nvoid disp()coutD2,x4=x4endl;void disp()coutD2,x4=x4endl;n n;第29页/共84页B,x1=-2,x2=-2D1,x3=3D2,x4=6D2,x4=6D2,x4=6void 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:dis
39、p();d2.disp();B,x1=-2,x2=-2D1,x3=3B,x1=-4,x2=-4D2,x4=6B,x1=0,x2=-3D2,x4=6B,x1=1,x2=-3D2,x4=6第30页/共84页n n(2)程序代码如下(课件例题):n n考察:虚拟派生中构造函数的执行顺序#includeclass Level1/声明基类声明基类Level1 public:int n1;Level1(int in_n1)n1=in_n1;coutThis is Level1,n1=n1endl;class Level21:virtual public Level1 /Level1为为虚虚基基类类,派派生
40、生类类Level21 public:intn21;Level21(int a):Level1(a)n21=a;coutThis is Level21,n21=n21endl;第31页/共84页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
41、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=3This is Level21,n21=3This is Level22,n22=3This is Level3,n3=3程序运行结果为:程序运行结果为:第32页/共84页n n(3)下列程序中,基类base和派生类d1、d2中都含有私有、保护和公有成员,d1类是base的派生类,d
42、2是d1的派生类。试分析下列程序的访问权限。n n考察:继承中成员访问属性的变化第33页/共84页#include class base private:int n1;protected:int k1;public:base()n1=0;k1=1;void fun1()coutn1k1endl;class d1:public baseint n2;protected:int k2;public:d1()n2=10;k2=11;void fun2()coutn1k1endl;coutn2k2endl;class d2:public d1int n3;protected:int k3;public
43、:d2()n3=20;k3=21;void fun3()coutn1k1endl;coutn2k2endl;coutn3k3endl;第34页/共84页void main()base baseobj;d1 d1obj;d2 d2obj;baseobj.fun1();d1obj.fun2();d2obj.fun3();n n 回答下列问题:n nl派生类d1中成员函数fun2()能否访问基类base中的成员fun1()、n1和k1?n nl 派生类d1的对象能否访问基类base中的成员fun1()、n1和k1?n nl派生类d2中成员函数fun3()能否访问直接基类d1中的成员fun2()、n2
44、和k2?能否访问基类base中的成员fun1()、n1和k1?n nl派生类d2的对象能否访问直接基类d1中的成员fun2()、n2和k2?能否访问基类base中的成员fun1()、n1和k1?n n 以上程序有错,请改正,并上机验证。privateprotectedpublicbasen1k1base(),fun1()d1n2k2d1(),fun2()d2n3k3d2(),fun3()privateprotectedpublicbasen1k1base(),fun1()d1n2k2k1d1(),fun2()fun1()d2n3k3k2k1d2(),fun3()fun2()fun1()第35页
45、/共84页(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函数中:函数
46、中:coutn1k1endl;替换为替换为fun1();fun3函数中:函数中:coutn1k1endl;coutn2k2endl;替换为替换为fun2();第36页/共84页n n(4)下列程序是一个有关虚基类及其派生类的初始化的程序。如果虚基类定义有非默认形式的(即带形参)构造函数,在整个继承结构中,直接或间接继承虚基类的所有派生类,都必须在构造函数的成员初始化表中列出对虚基类的初始化。第37页/共84页#include class B1public:int n1;B1(int in_n1)n1=in_n1;coutB1,n1=n1endl;class B21:virtual public
47、 B1public:int n21;B21(int a):B1(a)n21=a;coutB21,n21=n21endl;class B22:virtual public B1public:int n22;B22(int a):B1(a)n22=a;coutB22,n22=n22endl;class B3:public B21,public B22public:int n3;B3(int a):B1(a),B21(a),B22(a)n3=a;coutB3,n3=n3endl;void main()B3 obj(5);B1,n1=5B21,n21=5B22,n22=5B3,n3=5程序运行结果为:
48、程序运行结果为:第38页/共84页n n 如果程序运行结果为:n nB1,n1=5B1,n1=5n nB22,n22=5B22,n22=5n nB21,n21=5B21,n21=5n nB3,n3=5B3,n3=5n n上述程序应该怎么改?n n 如果将 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 没有变化,初始化的顺序与继承顺序有关,与初始
49、化列表的顺没有变化,初始化的顺序与继承顺序有关,与初始化列表的顺序无关序无关第39页/共84页n n4-4 完成下列程序n n(1)下列程序是一个从Point类私有派生新的矩形Rectangle类的程序。请填空完成程序,并上机运行验证。第40页/共84页n nclass Rectangle:class Rectangle:n n private:private:n nfloat W,H;float W,H;n npublic:public:n nvoid void InitR(float InitR(float x,x,float float y,float y,float w,float w
50、,float h)h)n n ;W=w;H=h;W=w;H=h;n n void Move(float xOff,float yOff)void Move(float xOff,float yOff)n n Point:Move(xOff,yOff);Point:Move(xOff,yOff);n nfloat GetX()return Point:GetX();float GetX()return Point:GetX();n nfloat GetY()return Point:GetY();float GetY()return Point:GetY();n nfloat GetH()ret