| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1817 人关注过本帖
标题:大家好,这个程序向大家请教一下,谢谢啦
只看楼主 加入收藏
wangpeibing
Rank: 2
等 级:论坛游民
帖 子:13
专家分:15
注 册:2013-2-27
结帖率:100%
收藏
 问题点数:0 回复次数:3 
大家好,这个程序向大家请教一下,谢谢啦
#include<iostream>//求两点之间的距离
#include<cmath>
using namespace std;
class point
{
public:
    point(double xx,double yy)
    {
    x=xx;
    y=yy;
    }
    double getx(){return x;}
    double gety(){return y;}
    double distance(const point &p)//这一行是什么意思
    {
    x-=p.x;//p.x和p.y是什么意思
    y-=p.y;
    return sqrt(x*x+y*y);
    }
private:
    double x;
    double y;
};
int main()
{
point A(1,2),B(3,4);
cout<<A.distance(B)<<endl;//这一行是什么意思呀
return 0;
}
搜索更多相关主题的帖子: distance private include 
2013-03-10 15:49
queue
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-3-11
收藏
得分:0 
double distance(const point &p)//这一行是什么意思
    {
    x-=p.x;//p.x和p.y是什么意思
    y-=p.y;
    return sqrt(x*x+y*y);
    }

const point &p  意思是定义一个常量对象   

p.x 表示调用对象的属性x
p.y 表示调用对象的属性y

x -= p.x  就是 x = A.x - B.x   本身的类对象调用自己的x, 减去传入的对象的x变量
2013-03-11 12:58
wangpeibing
Rank: 2
等 级:论坛游民
帖 子:13
专家分:15
注 册:2013-2-27
收藏
得分:0 
谢谢啦
2013-03-13 13:48
烟尘潇洒
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2013-1-27
收藏
得分:0 
# include <iostream>//求两点之间的距离
//这个cmath头文件,是为了兼容c语言中的math头文件,在C++中用cmath来表示
//很多其他的库也是这样用的.比如C语言中有ctype.h头文件,在C++中则用
//cctype表示
# include <cmath>
using namespace std;

class point//定义一个点类
{
public://共有接口
    point(double xx, double yy)//构造函数
    {
        x=xx;
        y=yy;
    }
    double getx(){return x;}
    double gety(){return y;}
    /*
    本行是一个一个函数的头部,其中包含了该函数的类型信息。
    函数名distance(即中文中的距离)函数有一个返回为double
    类型的返回值,该函数需要接受一个point类对象的引用。并且
    这个引用被修饰为const的,也就是说在调用函数的过程中,我们只能读出
    p的成员,但是却不能写入。
    */
    double distance(const point &p)
    {
        /*既然p是一个点类的对象,换句话说p也就是你所为这个函数传递的
        实参的别名,它既然是一个点类的对象,自然也就有了相应的两个
        数据成员。想要访问这个实参的x数据成员和y数据成员,这里通过了
        逗号运算符实现访问数据成员的功能。
        */
        x -= p.x;//等价于x = x - p.x;
        y -= p.y;
    return sqrt(x*x + y*y);//这里的是求两个点的距离公式。sqrt函数求平方根
    }
private:
    double x;
    double y;
};
int main(void)
{
    point A(1,2),B(3,4);
    /*
    cout是名字空间中的名字。因为在文件开头已经使用了using说明符
    所以直接就可以使用,而endl是换行
    而至于A.distance(B)这个估计也就是这个代码中的最值得需要理解的地方
    而且,也挺难说的。
    首先,很明显这个函数调用了距离函数,要求两个点(即A和B)的距离,
    因此调用了distance函数。实参是B即p引用的对象。(换言之p就是B,
    B就是P),而distance函数中的x和y即属于调用该函数的对象(A)中的数据
    成员。
    */
    cout<<A.distance(B)<<endl;
return 0;
}
/*
在VC++6.0中运行的结果为
==========================
2.82843
Press any key to continue
==========================
*/
2013-03-24 15:24
快速回复:大家好,这个程序向大家请教一下,谢谢啦
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029008 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved