实验一:类的设计与定义。实验要求:点类point的设计与定义。point成员x,y。成员函数:构造,set移动,比较等。测试point类
时间: 2023-06-12 16:08:14 浏览: 51
Okay,我明白了。关于你的问题,我可以为您提供一个点类(Point Class)的设计与定义作为参考:
```cpp
#include <cmath>
#include <iostream>
class Point {
public:
Point() : x_{0}, y_{0} {}
Point(double x, double y) : x_{x}, y_{y} {}
void Move(double dx, double dy) {
x_ += dx;
y_ += dy;
}
double DistanceTo(const Point& to) const {
double dx = x_ - to.x_;
double dy = y_ - to.y_;
return std::sqrt(dx*dx + dy*dy);
}
bool operator < (const Point& other) const {
return x_ < other.x_ || (x_ == other.x_ && y_ < other.y_);
}
bool operator == (const Point& other) const {
return x_ == other.x_ && y_ == other.y_;
}
friend std::ostream& operator << (std::ostream& os, const Point& pt) {
os << "(" << pt.x_ << ", " << pt.y_ << ")";
return os;
}
private:
double x_;
double y_;
};
```
这个Point类具有以下成员:
- x_ 和 y_:作为点的坐标,通过构造函数初始化。
- 构造函数(两个):用于初始化类的成员变量x_和y_。
- Move() 函数:用于移动点的位置。
- DistanceTo() 函数:用于计算两个点之间的距离。
- operator<() 和 operator==():用于排序和比较两个点是否相等。
- 友元函数std::ostream & operator<<():用于打印点的位置(可以直接输出)。
您可以使用以下代码进行测试:
```cpp
int main() {
Point pt1(0,0);
Point pt2(3,4);
std::cout << "pt1: " << pt1 << std::endl;
std::cout << "pt2: " << pt2 << std::endl;
std::cout << "distance from pt1 to pt2: " << pt1.DistanceTo(pt2) << std::endl;
std::cout << "pt1 < pt2 ? " << (pt1 < pt2) << std::endl;
pt1.Move(2, 2);
std::cout << "after moving pt1: " << pt1 << std::endl;
return 0;
}
```
我希望这个代码示例能够对您有所帮助。