结合虚函数、继承思想,在基类Base中定义纯虚函数disp(),用来求面积。按照下面给出的部分代码设计派生类直角三角形、正方形和圆形三种图形求面积的方法disp()。 int main() { Base *p; Triangle t(20,20); // Triangle为直角三角形 Square s(20); Circle c(20); p=&t; p->disp(); p=&s; p->disp(); p=&c; p->disp(); }
时间: 2024-03-10 12:47:25 浏览: 47
好的,以下是代码实现:
```cpp
#include <iostream>
using namespace std;
class Base {
public:
virtual void disp() = 0; // 纯虚函数,用来求面积
};
class Triangle : public Base {
public:
Triangle(double b, double h) : base(b), height(h) {}
void disp() {
double area = 0.5 * base * height;
cout << "Triangle: The area is " << area << endl;
}
private:
double base, height;
};
class Square : public Base {
public:
Square(double l) : length(l) {}
void disp() {
double area = length * length;
cout << "Square: The area is " << area << endl;
}
private:
double length;
};
class Circle : public Base {
public:
Circle(double r) : radius(r) {}
void disp() {
double area = 3.14 * radius * radius;
cout << "Circle: The area is " << area << endl;
}
private:
double radius;
};
int main() {
Base* p;
Triangle t(20, 20);
Square s(20);
Circle c(20);
p = &t;
p->disp();
p = &s;
p->disp();
p = &c;
p->disp();
return 0;
}
```
在上面的代码中,我们定义了一个基类 Base,其中包含一个纯虚函数 disp(),用来求面积。然后,我们又定义了三个派生类 Triangle、Square 和 Circle,分别用来求直角三角形、正方形和圆形的面积。在这些派生类中,我们都实现了 disp() 函数,用来计算各自的面积,并输出结果。
在 main() 函数中,我们创建了一个指向 Base 类型的指针 p,然后分别把它指向 Triangle、Square 和 Circle 对象。然后,我们分别调用它们的 disp() 函数,输出各自的面积。
由于 Base 类中包含了纯虚函数,所以 Base 类是一个抽象类,无法实例化对象。在派生类中,我们必须实现 disp() 函数,否则这些派生类也是抽象类。
阅读全文