1、添加double型的保护数据成员:rectWidth和rectHeight,分别表示矩形的宽度和高度;定义带参构造函数;重定义公有成员函数Show,打印矩形的宽度和高度,输出格式为“W: 宽度; H: 高度; Area: 面积”;重定义公有成员函数Area,计算矩形面积。(3)从形状类Shape派生椭圆类Ellipse:rectWidth和rectHeight,分别表示椭圆外接矩形的宽度和高度;重定义公有成员函数Show,打印椭圆外接矩形的宽度和高度,输出格式为“W:重定义公有成员函数Area,计算椭圆面积。在main函数中,首先根据输入的整数创建相应大小的Shape对象指针数组,再根据输入的
2、对象类型和信息动态创建相应类型的对象,并关联到对象指针数组。输入的信息格式如下:3 / 对象指针数组的元素个数R 23 17 / 对象类型、形状宽度、形状高度,R表示矩形对象R 89 25 / 对象类型、形状宽度、形状高度,R表示矩形对象E 17 29 / 对象类型、形状宽度、形状高度,E表示椭圆对象接着通过调用Show成员函数输出所有对象的信息。然后输出面积相等的形状对象的信息(要求使用重载的运算符“=”来判断对象的面积是否相等),输出格式如下:Area of Shapei is equal to Shapej最后将所有形状对象按面积从大到小排序(要求使用重载的运算符“”来判断对象的面积的大
3、小关系),并输出排序后的对象信息。输入:对象数目对象类型 对象的外接矩形宽度 对象的外接矩形高度输出:排序前的对象信息面积相等的对象信息排序后的对象信息输入样例:6R 23 17R 89 25R 17 23E 29 17E 89 75E 17 29输出样例:W: 23;17; 391 89;25; 2225 17;23; 29; 387.20175; 5242.5329;Area of Shape0 is equal to Shape2Area of Shape3 is equal to Shape5提示:来源:#include using namespace std;class Shapep
4、ublic: virtual double Area() = 0; virtual void Show() = 0; friend bool operator =(Shape &shop1,Shape &shop2) return (shop1.Area()= shop2.Area(); friend bool operator (Shape & return (shop1.Area() shop2.Area(); friend bool operator return (shop1.Area() virtual Shape();class Rectangle :public Shape Re
5、ctangle(double rectwidth, double rectheight) rectWidth = rectwidth; rectHeight = rectheight; double Area() double area = rectWidth * rectHeight; return area; void Show() cout rectWidth ;H: rectHeight Area: Area() number; Shape *Pnumber; for(int i = 0; i rectWidth rectHeight; if (type = R) Pi = new R
6、ectangle(rectWidth,rectHeight); else if(type = E Pi = new Ellipse(rectWidth,rectHeight); else输入类型错误,请重新输入! i = i - 1; Pi-Show(); number-1; for(int j = i + 1; j *Pj) base = Pj; Pj = Pj+1; Pj+1 = base; if(number = 6) base = P2; P2 = P3; P3 = base; delete Pi; return 0;虚函数利用虚函数实现多态:(1)设计Person类,要求具有用于表示
7、姓名的保护数据成员:string szName; 实现信息打印的公有成员函数:void Print()。其中,Print函数设计为虚函数,输出的信息格式为:“Person 姓名”。(2)从Person类派生Student类,添加用于表示学号的保护数据成员:int iNumber;重定义用于信息打印的公有成员函数:其中,Print函数输出的信息格式为:“Student 姓名 学号”。(3)从 Person类派生Teacher类,添加用于表示教龄的保护数据成员:int iYear;“Teacher 姓名 教龄”。(4)从Student类派生Graduate类,添加用于表示研究方向的保护数据成员:s
8、tring szResearch;“Graduate 姓名 研究方向”。在main函数中根据用输入的整数动态创建一个Person类的对象指针数组。用户依次输入对象信息(对象类别及其相应的数据成员值),根据对象类别动态创建相应的对象并赋给相应的对象指针数组元素。全部录入后,根据用户输入要显示的对象信息在数组中的位置,调用Print函数在屏幕上打印出相应对象的信息。如果用户输入“exit”,则退出。对象指针数组的长度;对象类型及对象信息(输入方式见输入样例);要显示的对象在数组中的位置;exit。用户要求显示的对象信息。4Person ZhangStudent Zhao 200905Graduate Li 200905 DataMiningTeacher Luo 102exit基类的成员函数Print()定义成虚函数。c
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1