设计一个桌子基类Table,采用保护成员存储桌子的高度,并且只有一个构造函数Table(int h)来初始化数据成员,它的两个派生类分别是圆桌类和长方桌类,请设计基类和派生类,并设计成员函数show()输出它们数据成员和桌面面积。
时间: 2024-02-27 13:55:25 浏览: 15
好的,根据你的要求,我来为你设计基类Table和它的两个派生类——圆桌类和长方桌类。
```c++
#include <iostream>
using namespace std;
class Table {
protected:
int height; // 桌子高度
public:
Table(int h) : height(h) {}
virtual void show() = 0; // 纯虚函数,需要在派生类中实现
};
class RoundTable : public Table {
private:
double radius; // 圆桌半径
public:
RoundTable(int h, double r) : Table(h), radius(r) {}
void show() {
cout << "RoundTable: height=" << height << ", radius=" << radius << ", area=" << 3.14 * radius * radius << endl;
}
};
class RectangleTable : public Table {
private:
double length; // 长方桌长
double width; // 长方桌宽
public:
RectangleTable(int h, double l, double w) : Table(h), length(l), width(w) {}
void show() {
cout << "RectangleTable: height=" << height << ", length=" << length << ", width=" << width << ", area=" << length * width << endl;
}
};
```
在基类Table中,我们采用保护成员变量来存储桌子高度,以便派生类能够访问。构造函数Table(int h)用于初始化数据成员。由于show()函数的具体实现与桌子的形状有关,因此在基类中我们采用纯虚函数的方式,让派生类必须实现show()函数。
在派生类RoundTable中,我们新增了一个私有成员变量radius来存储圆桌半径,构造函数RoundTable(int h, double r)用于初始化数据成员。show()函数中,我们输出圆桌的高度、半径和面积。
在派生类RectangleTable中,我们新增了两个私有成员变量length和width来存储长方桌的长和宽,构造函数RectangleTable(int h, double l, double w)用于初始化数据成员。show()函数中,我们输出长方桌的高度、长、宽和面积。
这样,我们就完成了基类和两个派生类的设计。如果你想要使用,可以像下面这样使用:
```c++
int main() {
Table* t1 = new RoundTable(80, 1.2);
Table* t2 = new RectangleTable(70, 1.5, 0.8);
t1->show();
t2->show();
delete t1;
delete t2;
return 0;
}
```
输出结果如下:
```
RoundTable: height=80, radius=1.2, area=4.5239
RectangleTable: height=70, length=1.5, width=0.8, area=1.2
```