设计一个桌子基类Table,采用保护成员存储桌子的高度,并且只有一个构造函数Table(int h)来初始化数据成员,它的两个派生类分别是圆桌类和长方桌类,请设计基类和派生类,并设计成员函数show()输出它们数据成员和桌面面积。
时间: 2024-02-27 11:57:13 浏览: 62
创建一个桌子类,桌子名称,重量,宽度,长度
4星 · 用户满意度95%
好的,我知道了。下面是基类Table和它的两个派生类的代码实现:
```
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() {
double area = 3.14159 * radius * radius;
std::cout << "Round Table: height = " << height << ", radius = " << radius << ", area = " << area << std::endl;
}
};
class RectTable : public Table {
private:
double length; // 长方桌长
double width; // 长方桌宽
public:
RectTable(int h, double l, double w) : Table(h), length(l), width(w) {}
void show() {
double area = length * width;
std::cout << "Rectangular Table: height = " << height << ", length = " << length << ", width = " << width << ", area = " << area << std::endl;
}
};
```
在基类Table中,我们定义了一个保护成员height存储桌子的高度,并且只有一个构造函数Table(int h)来初始化数据成员。同时,我们还定义了一个纯虚函数show(),表示这是一个抽象类,不能被实例化。
在派生类RoundTable和RectTable中,我们分别定义了它们自己的数据成员radius和length/width,并在构造函数中调用基类的构造函数来初始化基类的数据成员height。我们还重写了基类的纯虚函数show(),实现了它们自己的输出方式,并计算了桌面面积。
最后,我们可以这样使用这些类:
```
int main() {
Table *p;
RoundTable rt(75, 1.2);
RectTable ct(80, 1.5, 0.8);
p = &rt;
p->show();
p = &ct;
p->show();
return 0;
}
```
在main()函数中,我们定义了一个Table类型的指针p,并分别创建了一个RoundTable对象rt和一个RectTable对象ct。然后我们把这些对象的地址赋给指针p,并调用它们的show()函数输出它们的数据成员和桌面面积。由于show()函数是虚函数,所以它们会调用它们自己的实现。
阅读全文