我有一个类:
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
最佳答案
您可能在 Release模式下编译它。编译器看到 num
没有在任何地方使用并优化它。尝试使用 printf()
或 cout
显示 num
并再次尝试测试。
关于c++ - 为什么我不能给这个 int 赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16656902/