体验常成员函数 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等,

体验常成员函数

。在设计中,由于求距离、求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改。

class CPoint{private:  double x;  // 横坐标  double y;  // 纵坐标public:  CPoint(double xx=0,double yy=0);  double Distance1(CPoint p) const; //两点之间的距离(一点是当前点——想到this了吗?,另一点为p)  double Distance0() const;          // 到原点(0,0)的距离  CPoint SymmetricAxis(char style) const;//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称  void input();  //以x,y 形式输入坐标点  void output(); //以(x,y) 形式输出坐标点};
#include iostream #include Cmath using namespace std; class CPoint { private: double x; // 横坐标 double y; // 纵坐标 public: CPoint(double xx=0,double yy=0); double Distance1(CPoint p) const; // 两点之间的距离 double Distance0() const; // 到原点的距离 CPoint SymmetricAxis(char style) const; // 返回对称点 void input(); //以x,y 形式输入坐标点 void output(); //以(x,y) 形式输出坐标点 }; CPoint::CPoint(double xx,double yy) { x=xx; y=yy; } // 输入坐标点 void CPoint::input() { char ch; cout<<请输入坐标点(格式x,y ):; while(1) { cin>>x>>ch>>y; if (ch==',') break; cout<<输入的数据格式不符合规范,请重新输入 ; } } // 输出坐标点 void CPoint::output() { cout<<(<x,this->y);//用复制构造函数时,写作p(*this) switch(style) { case 'x': p.y=-y; break; case 'y': p.x=-x; break; case 'o': p.x=-x;p.y=-y; } return p; } int main( ) { double distance; CPoint p1,p2,p; cout<<第1个点p1,; p1.input(); cout<<第2个点p2,; p2.input(); distance=p1.Distance1(p2); cout<<两点的距离为:<运行结果;

   

最新文章