用c++定义一个抽象类Shape,包含计算面积和打印方法,并从Shape类派生两个新的类长方形和直角三角形,要求在新类中重写计算面积的方法
时间: 2024-03-05 21:50:16 浏览: 107
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
以下是C++代码实现:
```C++
#include<iostream>
using namespace std;
// 定义抽象类Shape
class Shape{
public:
// 纯虚函数,计算面积
virtual double calculate_area() = 0;
// 打印形状
void print_shape(){
cout << "This is a shape." << endl;
}
};
// 长方形类
class Rectangle : public Shape{
private:
double length;
double width;
public:
Rectangle(double len, double wid):length(len), width(wid){}
// 重写计算面积的方法
double calculate_area(){
return length * width;
}
// 重写打印形状的方法
void print_shape(){
cout << "This is a rectangle." << endl;
}
};
// 直角三角形类
class RightTriangle : public Shape{
private:
double base;
double height;
public:
RightTriangle(double b, double h):base(b), height(h){}
// 重写计算面积的方法
double calculate_area(){
return 0.5 * base * height;
}
// 重写打印形状的方法
void print_shape(){
cout << "This is a right triangle." << endl;
}
};
int main(){
// 创建长方形对象并计算面积
Rectangle rect(3, 4);
cout << "The area of the rectangle is: " << rect.calculate_area() << endl;
rect.print_shape();
// 创建直角三角形对象并计算面积
RightTriangle tri(3, 4);
cout << "The area of the right triangle is: " << tri.calculate_area() << endl;
tri.print_shape();
return 0;
}
```
在上述代码中,我们定义了一个抽象类Shape,其中包含了一个纯虚函数calculate_area和一个实函数print_shape。然后分别从Shape类派生了两个新的类Rectangle和RightTriangle,并在新类中实现了calculate_area和print_shape函数。这样,我们就可以根据不同的需求创建不同的形状对象,并调用相应的方法进行计算和打印。注意,纯虚函数必须在派生类中实现。
阅读全文