使用构造函数和this调用无参构造、或构造之间的调用关系,实现完成一个已知半径,求一个圆柱体的底面积和体积的计算程序。 要求:通过有参构造函数完成带参数的初始化工作;通过在无参构造中实现带有参数的构造。
时间: 2024-05-12 12:17:00 浏览: 75
好的,让我来为您解答这个问题。
首先,我们需要定义一个Circle类和一个Cylinder类来完成这个任务。Circle类用来表示圆的相关属性,而Cylinder类则继承Circle类,用来表示圆柱体的相关属性。
我们需要定义两个构造函数,一个是有参构造函数,用来完成带参数的初始化工作,另一个是无参构造函数,用来实现带有参数的构造。
代码如下:
```
// Circle类
class Circle {
private:
double radius; // 半径
public:
// 有参构造函数
Circle(double r) {
radius = r;
}
// 无参构造函数
Circle() : Circle(0) {}
double getRadius() {
return radius;
}
double getArea() {
return 3.1415926 * radius * radius;
}
};
// Cylinder类
class Cylinder : public Circle {
private:
double height; // 高度
public:
// 有参构造函数
Cylinder(double r, double h) : Circle(r) {
height = h;
}
// 无参构造函数
Cylinder() : Cylinder(0, 0) {}
double getHeight() {
return height;
}
double getVolume() {
return getArea() * height;
}
};
```
在Circle类中,我们定义了一个有参构造函数和一个无参构造函数。有参构造函数用来初始化radius属性,而无参构造函数则通过调用有参构造函数来实现带有参数的构造。
在Cylinder类中,我们同样定义了一个有参构造函数和一个无参构造函数。有参构造函数调用了Circle类的有参构造函数来初始化radius属性,同时也初始化了height属性。无参构造函数也是通过调用有参构造函数来实现带有参数的构造。
最后,我们可以通过创建一个Cylinder对象,并调用它的getArea()和getVolume()方法来计算它的底面积和体积,如下所示:
```
int main() {
Cylinder c(3, 5); // 创建一个半径为3,高度为5的圆柱体
// 计算底面积和体积
double area = c.getArea();
double volume = c.getVolume();
// 输出结果
cout << "底面积为:" << area << endl;
cout << "体积为:" << volume << endl;
return 0;
}
```
输出结果为:
```
底面积为:28.2743
体积为:141.372
```
以上就是完成已知半径,求一个圆柱体的底面积和体积的编程任务的实现方法。如果您还有其他问题需要解答,请随时告诉我。
阅读全文