用c++写一个geometry类
时间: 2023-07-04 09:14:42 浏览: 149
好的,下面是一个简单的C++ Geometry类示例:
```c++
class Geometry {
public:
// 构造函数
Geometry() {}
// 计算圆的面积
double circleArea(double radius) {
return PI * radius * radius;
}
// 计算矩形的面积
double rectangleArea(double length, double width) {
return length * width;
}
// 计算三角形的面积
double triangleArea(double base, double height) {
return 0.5 * base * height;
}
private:
const double PI = 3.14159265358979323846;
};
```
这个类包含三个函数,分别用于计算圆、矩形和三角形的面积。其中,PI是一个常量,用于存储圆的周长与直径之比。你可以在主函数中创建一个Geometry类的对象,并使用其方法计算面积。
相关问题
用c++写一个geometry类,可以派生circle,line,rectangle等类
好的,下面是一个可以派生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操作符释放内存。
c++ common::geometry::Envelope2d
c++ common::geometry::Envelope2d是一个表示二维平面上的矩形区域的类,它包含了左上角和右下角两个点的坐标,可以用来表示一个矩形的边界框或包围框。该类提供了一些常用的操作,如获取边界框的坐标、检查某个点是否在边界框内等。
常用的成员函数有:
- Envelope2d():默认构造函数,创建一个空的边界框。
- Envelope2d(double min_x, double min_y, double max_x, double max_y):构造函数,创建一个左上角坐标为 (min_x, min_y),右下角坐标为 (max_x, max_y) 的边界框。
- double min_x() const:返回边界框的左上角点的 x 坐标。
- double min_y() const:返回边界框的左上角点的 y 坐标。
- double max_x() const:返回边界框的右下角点的 x 坐标。
- double max_y() const:返回边界框的右下角点的 y 坐标。
- bool Contains(double x, double y) const:检查点 (x, y) 是否在边界框内。如果在,返回 true;否则返回 false。
- void Expand(double d):将边界框扩大 d 个单位。如果 d 是负数,边界框会缩小。
阅读全文