【发布时间】:2016-09-11 11:41:05
【问题描述】:
我开始学习 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;
}
我想问为什么下面的代码是错误的?为什么我必须使用“this”?
point::point(double x,double y)
{
x = new double;
*x=x;
y = new double;
*y=y;
}
【问题讨论】:
-
请将该教程扔进垃圾箱。
-
因为当您引用
x时,编译器认为您引用的是参数变量x而不是类变量x。并且由于参数变量x不是指针,因此会引发编译错误 -
这个例子非常愚蠢。 1)因为变量名
x和y(成员和参数)重复; 2) 因为x没有定义为double,而是指向double的指针。可能是为了举例,但要注意这些注意事项。