2017-09-12 20 views
0

は、次のコードを考えてみましょう私のテスト、二回目、my_static_intから2回bodyを呼び出すためには、代わりに私が1静的整数で予期しない動作を示し

のでであると予想何の値2を持っています0%はbodyが実行されるたびに破棄されます(これは%pを使用して検証します).my_classの全く別のオブジェクトで次の実行を再試行しないでください。

多分私の理解はここにありません。

答えて

3

static変数は、0の前にその変数のコピーが1つしかないことを意味します。staticキーワードがなければ、関数が取得されるたびに割り当てられて初期化されますと呼ばれる。

オブジェクトが構築されるたびに初期化される変数が必要な場合は、それをクラスメンバー変数として宣言するだけです。

+0

私はそれをクラス変数にしました。これは私が通常行っていることです(私は何か違うことをしようと思っていました)。この動作は他のOO言語と異なるのですか?私はクラスのすべてのオブジェクトが静的変数の独自のコピーを持つことを前提としていました。 – noobuntu

+1

SV静的クラスの可変振る舞いは、JavaおよびC++と同じです。 –

関連する問題