注册 登录
编程论坛 C++ Builder

大家好,这个程序向大家请教一下,谢谢啦

wangpeibing 发布于 2013-03-10 15:49, 1825 次点击
#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;
}
3 回复
#2
queue2013-03-11 12:58
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变量
#3
wangpeibing2013-03-13 13:48
谢谢啦
#4
烟尘潇洒2013-03-24 15:24
# 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
==========================
*/
1