我开始学习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;
}
答案 0 :(得分:4)
您的编译器如何知道x
参数与x
类字段之间的区别?
this->x
表示 x
变量属于I类,即point
类
如果您在类_x
中调用了字段x,则可以在构造函数中编写*_x = x
PS:是的,同意评论,这不是一个好的教程x)
答案 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;
}