0

我有一堂课:

    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

4

1 回答 1

4

您可能正在发布模式下编译它。编译器看到它num没有在任何地方使用并对其进行优化。尝试num使用printf()or显示cout并再次尝试测试。

于 2013-05-20T19:30:23.063 回答