我有一堂课:
class A
{
public:
A();
~A();
void IncrementNum();
private:
int num;
};
A::A() : num(0)
{
}
A::~A()
{
}
void A::IncrementNum()
{
num++;
}
int main()
{
A obj;
obj.IncrementNum();
}
当我在构造函数中设置断点时,它显示 num 等于某个随机值(例如 -2483290483),我认为这意味着它未分配。果然,当我调用 IncerementNum() 并在 之后的行上设置断点时num++
,它显示的内容完全相同(num 等于某个随机数)。重复调用 IncrementNum() 不会改变任何东西, num 不会改变。
所以我决定改为改为num++
,num = 1
认为这肯定会强制num
设置。没有。 num
即使在离散地将其设置为 1 后仍显示为某个随机数。再次,对新版本的 IncrementNum() 的连续调用无法更改其值。
知道是什么原因造成的吗?
其他信息:
我正在使用 Windows 7 家庭版和 Visual Studio 2010