编辑一个程序计算三角形正方形圆形三种图形的面积,要求抽象出一个基类base,在其中说明一个虚函数用来求面积,利用派生类定义三角形正方形圆形,编写主函数并测试
时间: 2024-09-22 22:00:48 浏览: 41
C++编写计算三角形、正方形和圆形面积程序
5星 · 资源好评率100%
在面向对象编程中,我们可以创建一个基类`BaseShape`来表示所有形状的共同属性,如名称和面积计算方法。然后,我们可以为具体的形状如三角形、正方形和圆形分别定义派生类,并重写基类中的虚函数来计算各自的面积。
首先,我们定义`BaseShape`基类:
```cpp
class BaseShape {
public:
// 虚函数,用于计算面积
virtual double getArea() const = 0;
// 公共名称方法
virtual std::string getName() const { return "BaseShape"; }
};
```
接着,我们为每个具体形状创建派生类:
```cpp
class Triangle : public BaseShape {
private:
double base, height;
public:
Triangle(double b, double h) : base(b), height(h) {}
double getArea() const override {
return 0.5 * base * height;
}
std::string getName() const override { return "Triangle"; }
};
class Square : public BaseShape {
private:
double side;
public:
Square(double s) : side(s) {}
double getArea() const override {
return side * side;
}
std::string getName() const override { return "Square"; }
};
class Circle : public BaseShape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() const override {
return M_PI * radius * radius;
}
std::string getName() const override { return "Circle"; }
};
```
最后,在主函数`main()`中,我们可以创建这些形状的对象并测试它们的面积计算:
```cpp
int main() {
Triangle triangle(4, 6);
Square square(5);
Circle circle(3);
std::cout << "Triangle area: " << triangle.getArea() << std::endl;
std::cout << "Square area: " << square.getArea() << std::endl;
std::cout << "Circle area: " << circle.getArea() << std::endl;
return 0;
}
```
运行这个程序会输出每个形状的具体面积。这就是如何通过基类和派生类实现计算三角形、正方形和圆形面积的功能,并演示了虚函数的使用。
阅读全文