求用C++编写几何点(二维平面上)的类Point,包括位置属性(二维坐标x,y)

成员函数包括:点的位置获取函数GetX()和GetY(),点的位置设置函数SetX()和SetY(),点的位置移动函数MoveTo()点的信息打印函数Display()。... 成员函数包括:
点的位置获取函数GetX()和GetY(),
点的位置设置函数SetX()和SetY(),
点的位置移动函数MoveTo()
点的信息打印函数Display()。
void main()  {   Point p(100,100);
p.Display();
p.MoveTo(200,200);
  cout<<"after moving…"<<endl;
p.Display();  }
程序输出结果如下:  X: 100  Y: 100  after moving…  X: 200  Y: 200
展开
 我来答
8号闪电人
推荐于2017-11-24 · TA获得超过324个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:177万
展开全部
下面这个类是我以前写的。
你只需稍做修改函数名就可以了,且功能大得多。
输出的话。
  cout<<"after moving…" << p <<endl;
就可以了,不需要display。

template <class T = double>
class point
{
public:
T x;
T y;
point() {};
point(T a,T b)
{
x = a;
y = b;
}

point(const point<T>& a)
{
x = a.x;
y = a.y;
}

point<T>& operator = (const point<T>& p)
{
x = p.x;
y = p.y;
}

friend point<T> operator - (point<T>& p1, point<T>& p2)
{
point<T> p(p1.x - p2.x, p1.y - p2.y);
return p;
}
void MoveTo(T a,T b)
{
x = a;
y = b;
}
void SetX(T a)
{
x = a;
}
void SetY(T a)
{
y = a;
}

T GetX()
{
return x;
}

T GetY()
{
return y;
}
friend T crossProduct(point<T> p1, point<T> p2) //向量叉积
{
return p1.x * p2.y - p1.y * p2.x;
}

friend T direction(point<T> p1, point<T> p2, point<T> pO) // 向量叉积 之差 判断方向
{
return crossProduct(p1 - pO, p2 - pO);
}

friend bool operator == (point<T>& p1, point<T>& p2) //判断位置
{
return (abs(p1.x - p2.x) < EP && abs(p1.y - p2.y) < EP);
}

friend T dist(point<T> p1, point<T> p2) //计算距离
{
return sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y));
}

friend istream& operator >> (istream& input, point<T>& p) //输入
{
input >> p.x;
input >> p.y;
return input;
}

friend ostream& operator << (ostream& output, point<T>& p) //输出
{
output << p.x << ' ' << p.y;
return output;
}
};
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式