定义一个rectangle类,编写构造函数和析构函数,定义一个circle类,编写构造函数和析构函数,定义二者的一个友元函数getTotalArea(),计算二者的面积和
时间: 2024-10-10 17:17:23 浏览: 22
首先,让我们定义一个Rectangle类,它包含长和宽属性以及相应的构造函数和析构函数:
```cpp
class Rectangle {
private:
double length;
double width;
public:
// 构造函数
Rectangle(double l, double w) : length(l), width(w) {}
// 计算矩形面积的成员函数
double getArea() const { return length * width; }
// 析构函数,无特别操作,这里默认不显示
~Rectangle() {}
// 友元函数,用于获取总面积
friend double getTotalArea(Rectangle rect, Circle circle);
};
```
接下来,我们定义Circle类,同样包含半径属性以及构造函数和析构函数:
```cpp
class Circle {
private:
double radius;
public:
Circle(double r) : radius(r) {}
// 计算圆面积的成员函数
double getArea() const { return M_PI * radius * radius; }
// 析构函数,同上,默认不显示
~Circle() {}
// 友元函数,用于获取总面积
friend double getTotalArea(Rectangle rect, Circle circle);
};
```
最后,友元函数`getTotalArea()`负责计算两者面积之和:
```cpp
// 友元函数,计算矩形和圆的总面积
double getTotalArea(Rectangle rect, Circle circle) {
return rect.getArea() + circle.getArea();
}
```
使用这两个类时,你可以创建实例并调用`getTotalArea`来获取总面积:
```cpp
int main() {
Rectangle rectangle(5, 3);
Circle circle(2.5);
double total_area = getTotalArea(rectangle, circle);
std::cout << "Total area of rectangle and circle: " << total_area << std::endl;
return 0;
}
```