构造函数和“this”指针

时间:2016-09-11 11:41:06

标签: c++ pointers this

我开始学习c ++,我在教程中找到了下面的课程。我的问题与构造函数有关。 这个班是:

class point{
private:
    double *x;
    double *y;
public:
    point(double x=1,double y=1);
    //....
};

,构造函数是:

point::point(double x,double y)
{
    this->x = new double;
    *(this->x)=x;
    this->y = new double;
    *(this->y)=y;

    }

我想问为什么以下代码错了?为什么我要使用“这个”?

 point::point(double x,double y)
    {
        x = new double;
        *x=x;
        y = new double;
        *y=y;

    }

3 个答案:

答案 0 :(得分:4)

您的编译器如何知道x参数与x类字段之间的区别?

this->x表示 x变量属于I类,即point

如果您在类_x中调用了字段x,则可以在构造函数中编写*_x = x

PS:是的,同意评论,这不是一个好的教程x)

有关详细信息:http://en.cppreference.com/w/cpp/language/this

答案 1 :(得分:2)

只想在Naliwe回答中添加一些额外信息,
你可以这样做构造函数:

 point::point(double x,double y) : 
              x(new double(x)), 
              y(new double(y))
 {
 }

在这种情况下,编译器理解哪个名称引用哪个" thing" - 例如第一个x用于类字段,第二个用于构造函数参数。

答案 2 :(得分:0)

也许您可以尝试使用范围限定符:

point::point( double x, double y ) {
   point::x = new double;
   *point::x = x;
   point::y = new double;
   *point::y = y;
}