在三维空间中描绘几何图形,经常需要记录图形的坐标点信息。请设计一个点类Point,它包括x、y、2三个私有数据成员,为它设计恰当的成员函数,使得它支持下面的程序正常运行。 int main() Point p1(1,2,3),p2, p3; cout<<p1; cin>>p2;p3=pl+p2;cout<<p3;if(pl= =p2) cout<<"点相同”; else cout<<”点不同”; return 0;用C++
时间: 2024-03-26 17:35:53 浏览: 121
实现三维坐标变换、投影变换,C++实现。
3星 · 编辑精心推荐
好的,这是一个简单的点类Point的实现,包括构造函数、运算符重载以及输入输出操作符重载:
```c++
#include <iostream>
using namespace std;
class Point {
private:
double x, y, z;
public:
Point(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
double getX() const { return x; }
double getY() const { return y; }
double getZ() const { return z; }
void setX(double x) { this->x = x; }
void setY(double y) { this->y = y; }
void setZ(double z) { this->z = z; }
Point operator+(const Point& p) const {
return Point(x + p.x, y + p.y, z + p.z);
}
Point& operator+=(const Point& p) {
x += p.x;
y += p.y;
z += p.z;
return *this;
}
bool operator==(const Point& p) const {
return x == p.x && y == p.y && z == p.z;
}
bool operator!=(const Point& p) const {
return !(*this == p);
}
friend ostream& operator<<(ostream& out, const Point& p) {
out << "(" << p.x << ", " << p.y << ", " << p.z << ")";
return out;
}
friend istream& operator>>(istream& in, Point& p) {
in >> p.x >> p.y >> p.z;
return in;
}
};
int main() {
Point p1(1, 2, 3), p2, p3;
cout << p1 << endl;
cin >> p2;
p3 = p1 + p2;
cout << p3 << endl;
if (p1 == p2)
cout << "点相同" << endl;
else
cout << "点不同" << endl;
return 0;
}
```
在这个程序中,我们定义了一个点类Point,它包括三个私有数据成员x、y、z,表示点在三维空间中的坐标。我们提供了默认构造函数、带参数构造函数和一些成员函数,如getX()、getY()、getZ()、setX()、setY()、setZ()等。此外,我们还提供了运算符重载函数,包括+、+=、==、!=等,以便我们能够对点进行加法、比较等操作。最后,我们还提供了输入输出操作符重载函数,以便我们能够方便地输入输出点对象。在主函数中,我们首先创建一个点对象p1,并输出它的坐标。然后,我们输入一个点对象p2,并将两个点相加得到p3,再输出p3的坐标。最后,我们比较p1和p2是否相等,并输出相应的信息。
阅读全文