在三维空间中描绘几何图形,经常需要记录图形的坐标点信息。请设计一个点类Point,它包括x、y、z三个私有数据成员,为它设计恰当的成员函数,使得它支持下面的程序正常运行。 int main() Point p1(1,2,3),p2,p3; cout<<p1; cin>>p2; p3=p1+p2; cout<<p3; if(pl==p2) cout<<"点相同"; else cout<<"点不同"; return 0; )
时间: 2024-03-09 15:51:06 浏览: 18
好的,我来设计一个Point类,满足你的要求。
```
#include<iostream>
using namespace std;
class Point{
private:
double x, y, z;
public:
Point(double a=0, double b=0, double c=0):x(a), y(b), z(c){} // 构造函数
friend ostream& operator<<(ostream &os, const Point &p){ // 输出运算符重载
os << "(" << p.x << ", " << p.y << ", " << p.z << ")" << endl;
return os;
}
friend istream& operator>>(istream &is, Point &p){ // 输入运算符重载
is >> p.x >> p.y >> p.z;
return is;
}
Point operator+(const Point &p){ // 加法运算符重载
return Point(x+p.x, y+p.y, z+p.z);
}
bool operator==(const Point &p){ // 等于运算符重载
return (x==p.x && y==p.y && z==p.z);
}
};
```
这个Point类中,包含了三个私有数据成员x、y、z,以及一个默认构造函数和一个自定义构造函数。此外,还重载了输出运算符<<、输入运算符>>、加法运算符+和等于运算符==。
在主函数中,我们可以使用Point类创建对象p1、p2、p3,并对其进行一些操作,如下所示:
```
int main(){
Point p1(1, 2, 3), p2, p3;
cout << p1; // 输出:(1, 2, 3)
cin >> p2; // 输入一个Point对象
p3 = p1 + p2; // Point对象的加法
cout << p3; // 输出:(p1.x+p2.x, p1.y+p2.y, p1.z+p2.z)
if(p1 == p2)
cout << "点相同" << endl;
else
cout << "点不同" << endl;
return 0;
}
```
这里使用了对象的加法运算符+,将p1和p2相加得到p3,然后比较p1和p2是否相等,如果相等就输出“点相同”,否则输出“点不同”。