所以我在Point类上创建了一个构造函数。
课程
class Point {
public:
Point(); //declare default constructor
double x;
double y;
};
构造函数
Point::Point() {
x=0.0;
y=0.0;
}
现在,当我在main中打印x和y的默认值时,它们显示为0和0,这是我期望的。
但是,只是为了好玩,将构造函数的声明更改为以下内容-
新构造函数声明
Point::Point() {
double x=0.0;
double y=0.0;
}
现在,当我调用相同的构造函数时,得到的x和y的值分别为2.16703e-314和6.95313e-310。现在,我知道了构造函数的用途。我想知道的是,当我声明一个构造函数开始像那样将变量类型添加到x和y时会发生什么?希望问题清楚。很高兴澄清它是否不是。
答案 0 :(得分:6)
在C ++中,您可以“阴影”变量。当您“阴影”一个变量时,您将在“外部”范围内创建一个与名称相同的新变量。现在,该名称指的是内部变量,任何更改都不会反映在外部变量中。
具有适当警告设置的编译器会告诉您何时进行此操作。
Point::Point() {
double x=0.0;
double y=0.0;
}
此处,x
和y
遮盖了Point::x
和Point::y
成员变量。因此,x=0.0
不会更改x
中的Point
。
答案 1 :(得分:0)
第一种情况
=INDEX('State Labor Force'!$D:$D,MATCH($H$79&$G80&$B$78,'State Labor Force'!$E:$E,0))
第二种情况
Point::Point() {
x=0.0; // refers to class member variable x
y=0.0; // refers to class member variable y
}
评论解释了每种情况下发生的情况。 因此,在第二种情况下,当您尝试访问类成员变量时,当您创建一个与类成员变量同名的局部变量时,就会得到垃圾值(与类成员变量相比,内存位置不同)。