用c++写一个geometry类,可以派生circle,line,rectangle等类
时间: 2024-02-15 22:03:56 浏览: 145
The_MultiPatch_Geometry_Type
好的,下面是一个可以派生circle、line、rectangle等类的C++ Geometry类示例:
```c++
// 基类 Geometry
class Geometry {
public:
// 纯虚函数,用于计算面积
virtual double area() = 0;
};
// 派生圆类 Circle
class Circle : public Geometry {
public:
// 构造函数
Circle(double radius) : radius(radius) {}
// 重载 area() 函数
double area() {
return PI * radius * radius;
}
private:
const double PI = 3.14159265358979323846;
double radius;
};
// 派生直线类 Line
class Line : public Geometry {
public:
// 构造函数
Line(double length) : length(length) {}
// 重载 area() 函数
double area() {
return 0.0;
}
private:
double length;
};
// 派生矩形类 Rectangle
class Rectangle : public Geometry {
public:
// 构造函数
Rectangle(double length, double width) : length(length), width(width) {}
// 重载 area() 函数
double area() {
return length * width;
}
private:
double length;
double width;
};
```
在这个示例中,我们定义了一个基类 Geometry,它包含一个纯虚函数 area(),用于计算面积。然后我们派生了三个类:Circle、Line和Rectangle,它们都继承了Geometry基类,并重载了area()函数,以计算特定形状的面积。
你可以在主函数中创建一个Geometry类的对象,并使用其方法计算面积。例如:
```c++
int main() {
Geometry* shape1 = new Circle(5.0);
Geometry* shape2 = new Line(10.0);
Geometry* shape3 = new Rectangle(3.0, 4.0);
std::cout << "The area of circle is " << shape1->area() << std::endl;
std::cout << "The area of line is " << shape2->area() << std::endl;
std::cout << "The area of rectangle is " << shape3->area() << std::endl;
delete shape1;
delete shape2;
delete shape3;
return 0;
}
```
输出结果为:
```
The area of circle is 78.5398
The area of line is 0
The area of rectangle is 12
```
注意,在使用完指针后,我们需要使用delete操作符释放内存。
阅读全文