先建立一个点类point,包含数据成员x,y(坐标点)。以它为基类,派生出圆类circle,增加数据成员radius(半径),再以cirlcle类为直接基类,派生出圆柱体类cylinder,再增加数据
时间: 2023-05-02 19:00:59 浏览: 416
题目中先建立一个点类 Point,包含数据成员 x, y(坐标点)。以它为基类,派生出圆类 Circle,增加数据成员 radius(半径),再以 Circle 类为基类,派生出圆柱体类 Cylinder,增加数据成员 height(高),再增加数据成员 volume(体积)。
相关问题
定义一个基类:点类,包括x坐标和y坐标,从它派生一个圆类,增加数据成员r(半径),
点类是一个基类,包括x坐标和y坐标这两个数据成员。可以通过定义构造函数和成员函数获取和修改这些数据成员的值。
圆类是从点类派生的子类,额外增加了一个数据成员r,表示圆的半径。同样也可以通过定义构造函数和成员函数获取和修改半径的值。
下面是一个简单的实例代码:
```cpp
class Point {
protected:
int x; // x坐标
int y; // y坐标
public:
Point(int x = 0, int y = 0) {
this->x = x;
this->y = y;
}
int getX() const {
return x;
}
int getY() const {
return y;
}
void setX(int x) {
this->x = x;
}
void setY(int y) {
this->y = y;
}
};
class Circle : public Point {
private:
int r; // 半径
public:
Circle(int x = 0, int y = 0, int r = 0) : Point(x, y) {
this->r = r;
}
int getR() const {
return r;
}
void setR(int r) {
this->r = r;
}
};
```
这样,我们可以通过实例化圆类的对象,并赋值x、y、r来表示一个圆的位置和半径。例如:
```cpp
int main() {
Circle c(5, 5, 10); // 实例化一个圆对象c,x=5,y=5,半径r=10
// 获取和修改坐标和半径
cout << "x坐标:" << c.getX() << endl;
cout << "y坐标:" << c.getY() << endl;
cout << "半径:" << c.getR() << endl;
c.setX(8);
cout << "修改后的x坐标:" << c.getX() << endl;
return 0;
}
```
以上输出结果为:
```
x坐标:5
y坐标:5
半径:10
修改后的x坐标:8
```
用c++编一个程序,先建立一个Point类,有数据成员X,Y(坐标点),以它为基类,派生出一个Circle类,增加数据成员R(半径),分别写出各自的构造函数和计算圆面积的函数,并在主程序中输出结果。
### 回答1:
#include <iostream>
using namespace std;//定义点类
class Point {
public:
Point(int x = 0, int y = 0) {
this->x = x;
this->y = y;
}
int getX() {
return x;
}
int getY() {
return y;
}
protected:
int x, y;
};//定义圆类,以点类为基类派生
class Circle : public Point {
public:
Circle(int x, int y, int r) : Point(x, y) {
this->r = r;
}
double getArea() {
return 3.14 * r * r;
}
private:
int r;
};int main() {
int x, y, r;
cout << "输入圆心坐标和半径:" << endl;
cin >> x >> y >> r;
Circle c(x, y, r);
cout << "圆的面积:" << c.getArea() << endl;
return 0;
}
### 回答2:
以下是一个用C语言编写的程序,其中定义了一个Point类和一个Circle类,并实现了相应的构造函数和计算圆面积的函数。
```c
#include <stdio.h>
#include <math.h>
// 定义Point类
typedef struct {
double X;
double Y;
} Point;
// 定义Point类的构造函数
Point createPoint(double x, double y) {
Point point;
point.X = x;
point.Y = y;
return point;
}
// 定义Circle类,继承自Point类
typedef struct {
Point center; // 继承Point类的数据成员
double R; // 新增数据成员,圆的半径
} Circle;
// 定义Circle类的构造函数
Circle createCircle(double x, double y, double r) {
Circle circle;
circle.center = createPoint(x, y);
circle.R = r;
return circle;
}
// 计算圆的面积
double calculateArea(Circle circle) {
return 3.14159 * circle.R * circle.R;
}
int main() {
Circle newCircle = createCircle(1.0, 2.0, 3.5);
double area = calculateArea(newCircle);
printf("圆的面积为:%lf\n", area);
return 0;
}
```
在主程序中,我们创建了一个Circle类的实例newCircle,坐标点为(1.0, 2.0),半径为3.5。然后通过调用calculateArea函数计算出该圆的面积,并将结果输出到屏幕上。
程序输出的结果为:
圆的面积为:38.484076
### 回答3:
下面是根据要求完成的程序:
```c
#include <iostream>
using namespace std;
class Point {
protected:
int x, y;
public:
Point(int x = 0, int y = 0) {
this->x = x;
this->y = y;
}
};
class Circle : public Point {
private:
int r;
public:
Circle(int x = 0, int y = 0, int r = 0) : Point(x, y) {
this->r = r;
}
double calculateArea() {
return 3.14159 * r * r;
}
};
int main() {
Circle circle(1, 2, 5);
double area = circle.calculateArea();
cout << "圆面积为:" << area << endl;
return 0;
}
```
以上程序中,首先定义了一个基类Point,拥有数据成员x和y表示坐标点。然后通过公有继承的方式,派生出一个Circle类,增加数据成员r表示半径。在Circle类的构造函数中,使用初始化列表将坐标点传递给基类的构造函数进行初始化,并初始化半径。还定义了一个计算圆面积的函数calculateArea(),其中使用pi近似值3.14159进行计算。
在主程序中,创建一个Circle对象circle,并传入坐标点(1, 2)和半径5。然后调用calculateArea()函数计算圆的面积,并将结果输出到屏幕上。
输出结果为:圆面积为:78.5398(保留四位小数)。