[英]Why can't I directly assign an int to an int pointer like this: int *p = 6;?
[英]Why can't I assign this int a value?
我有一堂课:
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
离散地设置为num
仍然显示为某个随机数。再次,对新版本的IncrementNum()的连续调用无法更改其值。
知道是什么原因造成的吗?
其他资讯:
我正在使用Windows 7家庭版和Visual Studio 2010
您可能正在发布模式下进行编译。 编译器发现num
未被任何地方使用,并对其进行了优化。 尝试使用printf()
或cout
显示num
,然后重试测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.