私はクラスを持っています:
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 など) に等しいことが示されます。これは、割り当てられていないことを意味します。そして案の定、IncreementNum() を呼び出して の後の行にブレークポイントを設定するとnum++
、まったく同じことが表示されます (num は乱数に等しい)。IncrementNum() を繰り返し呼び出しても何も変化せず、num も変化しません。
だから私は代わりにに変更num++
することにしました.num = 1
これは強制的に設定されると思いnum
ました. いいえ。 num
個別に 1 に設定した後でも、乱数として表示されます。繰り返しになりますが、新しいバージョンの IncrementNum() を連続して呼び出しても、その値は変更されません。
何がこれを引き起こしているのでしょうか?
他の情報:
Windows 7 Home Edition と Visual Studio 2010 を使用しています