修改代码使ponit类的定义中public只有一个成员函数
时间: 2024-04-01 15:31:49 浏览: 165
如果要让 Point 类的 public 访问权限中只有一个成员函数,可以将 set 方法改为类的构造函数,即在类的定义中添加一个构造函数,并将 set 方法的代码移到构造函数中。修改后的代码如下:
```
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
int x;
int y;
public:
Point(int a, int b) {
x = a;
y = b;
}
int get_x() {
return x;
}
int get_y() {
return y;
}
};
class Triangle {
private:
Point p1;
Point p2;
Point p3;
public:
double area() {
double a, b, c, p;
a = sqrt(pow(p1.get_x() - p2.get_x(), 2) + pow(p1.get_y() - p2.get_y(), 2));
b = sqrt(pow(p1.get_x() - p3.get_x(), 2) + pow(p1.get_y() - p3.get_y(), 2));
c = sqrt(pow(p2.get_x() - p3.get_x(), 2) + pow(p2.get_y() - p3.get_y(), 2));
if (a + b > c && a + c > b && b + c > a) {
p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
else {
return 0;
}
}
Triangle(int p1_x, int p1_y, int p2_x, int p2_y, int p3_x, int p3_y): p1(p1_x, p1_y), p2(p2_x, p2_y), p3(p3_x, p3_y) {}
};
int main() {
if (1) {
Triangle tr(0, 0, 0, 1, 1, 0);
cout << "三角形面积应该是:0.5,实际是:" << tr.area() << endl;
}
if (1) {
Triangle tr(0, 2, -1, -1, 1, -1);
cout << "三角形面积应该是:3, 实际是:" << tr.area() << endl;
}
if (1) {
Triangle tr(5, 5, -3, 1, 9, -2);
cout << "三角形面积应该是:36, 实际是:" << tr.area() << endl;
}
if (1) {
Triangle tr(0, 0, 1, 1, 2, 2);
cout << "三角形面积应该是:0, 实际是:" << tr.area() << endl;
}
return 0;
}
```
修改后的 Point 类中只有一个构造函数,并且在 Triangle 类的构造函数中调用该构造函数来初始化三个点的坐标。这样代码就符合题目要求了。
阅读全文