-1
class test
{
    public:
        int a;
        void init(int _a);
        void read(void);
}

私はこの簡単なプログラムを持っています。別のクラスから、「_a」の値を使用してテスト オブジェクトを初期化します。

void init(int _a){
    a = _a;
}

初期化:

testObject.init(3);

しかし、「read()」と入力すると、a の値は -858993460 になります。何かが間違っていることは理解しています ( :) )。もう使用されていないポインターである可能性があります。しかし。「a = _a」と書いた場合、a の VALUE は _a の値のコピーではないでしょうか?

void read(void){
    printf("a-value %d \n" , a);
}

_a の値を a にコピーして、_a が変更されても a が変更されないようにするにはどうすればよいですか?

4

1 に答える 1

5

私の精神的なデバッグ感覚はa、実際には設定されていないか、設定しaていると思っている を実際には設定していないことを示しています。

initを呼び出す前に実際には呼び出していないかread、別のインスタンスでそれらを呼び出している可能性がありますtest

通常、このようにごちゃごちゃした番号が表示される場合は、初期化されていない「ガベージ」番号の兆候です。

于 2013-05-16T22:09:32.700 に答える