为什么我不能将此int赋值?

时间:2013-05-20 19:28:00

标签: c++ visual-studio-2010 windows-7 int variable-assignment

我有一个班级:

    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 Home Edition和Visual Studio 2010

1 个答案:

答案 0 :(得分:4)

您可能正在发布模式下进行编译。编译器发现num未在任何地方使用并对其进行优化。尝试使用numprintf()显示cout并再次尝试测试。