Почему я не могу присвоить этому int значение?

У меня есть класс:

    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++, это показывает точно то же самое (число равно некоторому случайному числу). Повторные вызовы IncrementNum () ничего не меняют, num не меняется.

Поэтому я решил вместо этого изменить num++ в num = 1думая наверняка, это заставит num установить. Нету. num по-прежнему отображается как какое-то случайное число даже после дискретного задания его значения 1. Опять же, последовательные вызовы новой версии IncrementNum () не могут изменить его значение.

Есть идеи, что может быть причиной этого?

Другая информация:

Я использую Windows 7 Home Edition и Visual Studio 2010

0

Решение

Вы, вероятно, компилируете его в режиме Release. Компилятор видит это num не используется нигде и оптимизирован. Попробуйте отобразить num с printf() или же cout и попробуйте снова.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru