第5周项目1-体验常成员函数

来源:互联网 发布:cae仿真软件 编辑:程序博客网 时间:2024/05/29 17:41
/*   * Copyright (c) 2015, 烟台大学计算机学院   * All rights reserved.   * 文件名称:test.cpp   * 作    者:刘畅    * 完成日期:2015年 4 月 5 日   * 版 本 号:v1.0   *  * 问题描述: 设计平面坐标点类,计算两点之间的距离、到原点距离、关于坐标轴和原点的对称点等。             在设计中,由于求距离、求对称点等操作对原对象不能造成任何改变,所以,将这些函             数设计为常成员函数是合适的,能够避免数据成员被无意更改。 * 输入描述:输入对象的点的坐标; * 程序输出:按要求输出。


代码如下:

#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;                //到原点(0,0)的距离    Cpoint SymmetricAxis(char style) const;  //style取'x','y'和'o'分别表示按x轴,y轴,原点对称    void input();                            //以x,y形式输入坐标点。    void output();                           //以(x,y)形式输出坐标点};Cpoint::Cpoint(double xx,double yy){    x=xx;    y=yy;}double Cpoint::Distance1(Cpoint p) const{    double d;    d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));    return d;}double Cpoint::Distance0() const{    double d;    d=sqrt(x*x+y*y);    return d;}Cpoint Cpoint::SymmetricAxis(char style) const{    Cpoint p(this->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;}void Cpoint::input(){    char c;    cout<<"输入x,y(以x,y的形式): ";    while (1)    {        cin>>x>>c>>y;        if (c==',')            break;        else            cout<<"输入格式不正确,请重新输入:";    }}void Cpoint::output(){    cout<<"("<<x<<","<<y<<")"<<endl;}int main(){    Cpoint p1,p2,p;    cout<<"对点p1,";    p1.input();    cout<<"点p1到原点的距离为:"<<p1.Distance0()<<endl;;    cout<<"对点p2,";    p2.input();    cout<<"点p2到原点的距离为:"<<p2.Distance0()<<endl;    cout<<"点p1与p2之间的距离为:"<<p1.Distance1(p2)<<endl;    p=p1.SymmetricAxis('x');    cout<<"点p1关于x轴的对称点为:";    p.output();    p=p2.SymmetricAxis('y');    cout<<"点p2关于y轴的对称点为:";    p.output();    p=p1.SymmetricAxis('o');    cout<<"点p1关于原点的对称点为:";    p.output();    return 0;}


运行结果:

知识点总结:

如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,而不能修改它们。

学习心得:

看教学视频看得太早,过了两三天好像又遗忘了些东西,于是又再去看了相关的内容。开始感觉到一丝压力,这些东西着实有些复杂。

1 0
原创粉丝点击