有一个点类point,包含横、纵两个坐标数据,由它派生出 圆类circle,并添加一个半径数据,求其面积。本程序的 运行结果: 圆心为:(5,7) 半径为:9 面积为:254.469 #include<iostream.h> class point { int x; int y; /***********此行有错***********/ private: point(int a,int b) { x=a;y=b; } int getx(){return x;} int gety(){return y;} }; /***********此行有错***********/ class circle:: point { private: int r; public: /***********此行有错***********/ circle(int a,int b,int c) {r=c;} int getr(){return r;} float area(){return 3.14159*r*r;} }; void main() { circle c(5,7,9); cout<<"圆心为:("<<c.getx()<<","<<c.gety()<<")"<<endl; /***********此行有错***********/ cout<<"半径为:"<<getr()<<endl; cout<<"面积为:"<<c.area()<<endl; }
时间: 2023-07-05 08:36:06 浏览: 85
设计基类点类(Point)、直接派生类圆类(Circle)、间接派生类圆柱体类(Cylinder),将求面积的函数(area)声明成虚函数,并在主函数实现虚函数
这段代码存在多处错误,我来帮你指出并修改:
1. 在类 `point` 中,构造函数应该是公有的,因为需要在外部创建 `point` 对象,同时需要传递参数给构造函数初始化成员变量。
2. 在类 `point` 中,私有成员变量 `x` 和 `y` 后面应该有分号。
3. 在类 `circle` 中,应该使用继承关键字 `public` 继承 `point` 类,表示 `circle` 是 `point` 的公有派生类,从而可以使用 `point` 类中的成员函数和成员变量。
4. 在类 `circle` 中,构造函数应该调用基类 `point` 的构造函数进行成员变量的初始化。
5. 在类 `circle` 中,应该将 `r` 设置为私有成员变量,同时提供公有的访问函数 `getr()` 获取半径。
6. 在类 `circle` 中,计算圆的面积应该使用 `getr()` 函数获取半径。
7. 在 `main()` 函数中,输出半径应该调用 `c.getr()` 函数。
修改后的代码如下:
```cpp
#include <iostream>
using namespace std;
class point {
public:
point(int a, int b) {
x = a;
y = b;
}
int getx() { return x; }
int gety() { return y; }
private:
int x;
int y;
};
class circle : public point {
public:
circle(int a, int b, int c) : point(a, b) {
r = c;
}
int getr() { return r; }
float area() { return 3.14159 * r * r; }
private:
int r;
};
int main() {
circle c(5, 7, 9);
cout << "圆心为:(" << c.getx() << "," << c.gety() << ")" << endl;
cout << "半径为:" << c.getr() << endl;
cout << "面积为:" << c.area() << endl;
return 0;
}
```
输出结果为:
```
圆心为:(5,7)
半径为:9
面积为:254.469
```
阅读全文