在 C++ 中创建方法

Creating a method in c++

本文关键字:方法 创建 C++      更新时间:2023-10-16

我正在尝试用 c++ 创建一个方法,其中,当实现时看起来像

pointA.distanceTo(pointB)

但是,我在尝试将"pointA"合并到方法中时遇到麻烦。目前,我的方法代码如下所示:

double Point::distanceTo(Point p1)
{
    double xDist=getxCoord()-???;
    double yDist=getyCoord()-???;
    return sqrt(xDist*xDist-yDist*yDist);
}

我知道getxCoord()和getyCoord()方法只会在distanceTo(Point p1)的括号内获取对象。

但是我不知道如何从"pointA.distanceTo(pointB)"中的点A获取对象信息。

我知道getxCoord()和getyCoord()方法只会在distanceTo(Point p1)的括号内获取对象。

实际上,您完全倒退了。这两个调用将获取此对象或 PointA 的值,也称为 this 。要从 p1 获取详细信息,您必须对其调用方法:

double xDist = this->getxCoord() - p1.getxCoord();
double yDist = this->getyCoord() - p1.getyCoord();

不过,this是隐式的,您不需要它。以上相当于:

double xDist = getxCoord() - p1.getxCoord();
double yDist = getyCoord() - p1.getyCoord();

您将函数distanceTo()定义为类 Point 的成员函数,如果您从 pointA 调用该函数,则自动访问该函数的所有数据成员pointA

因此,您可以调用getxCoord()getyCoord()进行pointB,并直接访问pointA呼叫getxCoord()getyCoord()XY坐标。

法典:

double Point::distanceTo(Point p1)
{
    double xDist=getxCoord()-p1.getxCoord();
    double yDist=getyCoord()-p1.getyCoord();
    return sqrt(xDist*xDist-yDist*yDist);
}

我知道getxCoord()getyCoord()方法只会在distanceTo(Point p1)的括号内获取对象。

不!当你做pointA.distanceTo(pointB);时,参数pointB成为pointA distanceTo方法中p1的参数(而不是相反)。因此

double Point::distanceTo(Point p1)
{
    double xDist = getxCoord()- p1.getxCoord();
    double yDist = getyCoord()- p1.getyCoord();
    return sqrt(xDist * xDist - yDist * yDist);
}

应该工作; 这里第一个getxCoord()将在pointA(或this指针)上运行,下一个将在pointB上运行。