2-5-1 体验常成员函数
来源:互联网 发布:迅雷mac版下载速度是0 编辑:程序博客网 时间:2024/05/29 11:12
问题及代码:
#include <iostream>#include <cmath>using namespace std;class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0):x(xx),y(yy){}; 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) 形式输出坐标点};double CPoint::Distance1(CPoint p) const{ return sqrt((this->x-p.x)*(this->x-p.x)+(this->y-p.y)*(this->y-p.y));}double CPoint::Distance0() const{ return sqrt(this->x*this->x+this->y*this->y);}CPoint CPoint::SymmetricAxis(char style) const{ CPoint n=*this; switch(style) { case 'x': { n.x=-n.x; break; } case 'y': { n.y=-n.y; break; } case 'o': { n.x=-n.x; n.y=-n.y; break; } } return n;}void CPoint::input(){ int a,b; char c; while(1) { cin>>a>>c>>b; if(c!=',') { cout<<"error cin,retry."<<endl; continue; } else break; } x=a; y=b;}void CPoint::output(){ cout<<'('<<x<<','<<y<<')'<<endl;}int main(){ CPoint a(1,2),a1(1,0); char x,y,o; cout<<a.Distance1(a1); cout<<endl; cout<<a1.Distance0(); cout<<endl; a.input(); a.output(); a1=a1.SymmetricAxis('o'); a1.output(); return 0;}
运行结果:
学习小结:
有好多要说。
首先是学到了好多东西的感觉。
因为在之前的一个阅读程序和这个项目刚好有一个问题类似,就是我已开始不明白类成员之间可以直接赋值的,看到class A=*p的困惑可想而知。
在这个项目中在上机之前困扰我的第一个问题就是distance1(cpoint p)函数中的形式参数要怎么赋值,一开始我想到了实参写成(2,1)这样,error!
接着(cpoint a1(2,1))还是错了,最后终于联想到了阅读程序直接赋值的办法,尝试了一下,对了。
另外一个问题就是,在CPoint SymmetricAxis(char style) const函数中,我原本没有定义新的对象去操作的,而是直接用this指针和*this这些去操作,因为我感觉都一样,但是程序一直出错,实在想不到要怎么办,想问老师来着,但是老师刚好在指点别的同学,我就想自己去找找看,单步调试。结果意外的发现了this指针后面有一个让我惊喜的const,原来this指针是不能改变值的,难怪我把this->X=-(this->X)换成了n.X=-n.X后就正确了。
还有个小错误就是style 实参要加单引号。
主要这些都是自己主动去发现问题并解决的,我觉得比较难能可贵。相对于之前来说
最后的运行结果有点瑕疵,0显示成了-0,既然无伤大雅,我也就不改了
0 0
- 2-5-1 体验常成员函数
- 体验常成员函数2
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 体验常成员函数
- 静态成员应用
- (R语言)R的统计模型
- 2015-第5周项目2-对象作为数据成员
- JPA注解
- HDU1848 Fibonacci again and again【博弈】
- 2-5-1 体验常成员函数
- (R语言)图形过程
- 第三周项目二 三角形 2 优化
- leetcode-55 Jump Game
- 一些常用php的header头
- java异常分类
- 最小生成树的模板
- 第五周 项目3-用多文件组织多个类的程序
- 左侧伸缩式导航源码解析