Xx3(1,2,3);x1.setA(3);return0;}2.请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。(1)#includeusingnamespacestd;classtest{public:test();intgetint(){returnnum;}floatgetfloat(){returnfl;}~test();private:intnum;floatfl;};test::test(){cout<<\default\<classX{public:X(intx1,char*x2,floatx3):a(x1),c(x3){b=newchar[sizeof(x2)+1];strcpy(b,x2);}X():a(0),b(\}X(intx1,char*x2=\x3=10):a(x1),b(x2),c(x3){}X(constX&other){a=other.a;b=\X&other)\c=other.c;}voidprint(){cout<<\}private:inta;char*b;floatc;};intmain(){X*A=newX(4,\XB,C(10),D(B);A->print();B.print();C.print();D.print();return0;}3.某单位的职工工资包括基本工资Wage,岗位津贴Subsidy,房租Rent,水费WaterFee,电费ElecFee。设计实习工资管理的类Salary,该类的形式如下:classSalary{public:Salary(){初始化工资数据的各分项数据为0}Salary(……){初始化工资数据的各分项数据}voidsetXX(doublef){XX=f;}doublegetXX(){returnXX;}doubleRealSalary(){……}//计算实发工资……Private:BoubleWage,Subsidy,Rent,WaterFee,ElecFee;};其中,成员函数setXX()用于设置工资的各分项数据,成员函数getXX()用于获取工资的各分项数据,XX代表Wage、Subsidy等数据成员,如Wage对应的成员函数则为setWage()和getWage()。实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee编程完善该类的设计,并在主函数中测试该类的各成员函数。4.设计一个时钟类Clock。数据成员包括hour(小时)、minute(分钟)、second(秒)。要求用成员函数实现以下功能:(1)创建具有指定时钟(小时、分钟、秒)的Clock对象,默认时钟为00:00:00。(2)动态地设置时、分、秒。(3)在屏幕上按“时:分:秒”的格式显示时钟。(4)在主函数中测试该类。5.设计一个职工类Employee。数据成员包括字符串型的name(姓名)、street(街道地址)、city(市)、province(省)、postalcode(邮政编码)。要求用成员函数实现以下功能:(1)创建职工对象时,可以按不同方式指定职工信息。(2)动态地设置职工对象信息。(3)在屏幕上打印职工信息。(4)在主函数中测试该类。6.需要求3个三角形的体积,请编写一个基于对象的程序。数据成员包括三角形的三边长a、b、c。要求用成员函数实现以下功能:(1)定义构造函数完成长方柱的初始化;(2)求三角形的周长;(3)求三角形的面积;(4)输出三角形信息。7.下面是一个整型数组类intArray的声明,请给出该类所有数据成员的类外定义。classintArray{public:intArray(intsize);//构造函数intArray(constintArray&x);//复制构造函数~intArray();//析构函数boolSet(inti,intelem);//设置第i个数组元素的值,设置成功返回true,失败返回falseboolGet(inti,int&elem);//获取第i个数组元素的值,获取成功返回true,失败返回falseintLength()const;//获取数组的长度voidReSize(intsize);//重置数组voidPrint();//输出数组private:int*element;//指向动态数组的指针intarraysize;//数组的当前长度};8.下面是一个整型链表类intList的声明,请给出该类所有数据成员的类外定义。classintList{protected:structNode{Node*next;intdata;};Node*pFirst;public:intList();//构造函数~intList();//析构函数//向链表的第i个位置插入一个元素,插入成功返回true,失败返回falseboolInsert(inti,intelem);//删除链表的第i个位置的元素,删除成功返回true,失败返回falseboolRemove(inti,int&elem);int*Find(intelem)const;//查找值为elem的元素,返回指向该元素的指针intLength()const;//返回链表长度voidPrintlist();//输出链表};9.下面是一个整型堆栈类intStack的声明,请给出该类所有数据成员的类外定义。classintStack{public:intStack(intsize=10);//构造函数~intStack();//析构函数boolPush(intelem);//入栈操作boolPop(int&elem);//出栈操作intLength()const;//获取栈中元素的个数private:int*data;//指向动态数组的指针inttop;//栈顶指针intsize;//堆栈的容量};实验四、继承与组合(6学时)一、实验目的
1.了解继承在面向对象程序设计中的重要作用。2.进一步理解继承与派生的概念。3.掌握通过继承派生出一个新的类的方法。4.了解虚基类的作用和用法。5.掌握类的组合二、实验内容
1.请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。(1)#includeusingnamespacestd;classA{public:A(){cout<<\called.\\n\virtual~A(){cout<<\called.\\n\};classB:publicA{public:B(inti){cout<<\called.\\n\buf=newchar[i];}virtual~B(){delete[]buf;cout<<\called.\\n\}private:char*buf;};voidfun(A*a){cout<<\yousucceed!\deletea;}intmain(){A*a=newB(15);fun(a);return0;}(2)#includeusingnamespacestd;classA{public:A(inta,intb):x(a),y(b){cout<<\constructor...\}voidAdd(inta,intb){x+=a;y+=b;}voiddisplay(){cout<<\~A(){cout<<\A...\private:intx,y;};classB:privateA{private:inti,j;AAobj;public:B(inta,intb,intc,intd):A(a,b),i(c),j(d),Aobj(1,1){cout<<\constructor...\voidAdd(intx1,inty1,intx2,inty2){A::Add(x1,y1);i+=x2;j+=y2;}voiddisplay(){A::display();Aobj.display();