3

ステートメント:「静的メンバー変数は、静的メソッドによってのみ変更できます。」

このステートメントは正しいですか、それとも静的メンバー変数を非静的メソッドで変更できますか?

ありがとう!

4

4 に答える 4

7

それは間違っています。staticデータメンバーは、任意のメンバー関数で変更できます。staticメソッドは、任意のメンバー関数から呼び出すこともできます。

それは不可能な逆です。staticメソッドは非メソッドを呼び出すことも、非メンバーにstaticアクセスすることもできません。static

これは、staticメンバー(メソッドとデータ)がクラスにバインドされているのに対し、非静的はクラスインスタンスにバインドされているためです。

于 2012-03-24T15:53:53.540 に答える
7

これは正しくありません。静的メンバーは、非静的メンバー関数によってアクセスおよび変更できます。

于 2012-03-24T15:54:23.847 に答える
1

ステートメントが正しくありません。静的メンバーは、任意のクラスメンバー関数および静的メンバーが表示される他の関数から変更できます(つまり、パブリック静的はどこからでも変更できます)。

于 2012-03-24T15:58:07.653 に答える
0

staticデータメンバー(および静的メンバー関数)は、アクセス指定子で許可されている場合、プログラムのどこからでもアクセスできます。

struct test {
   void foo() {
      x = 1;
      bar();
   }
   static bar() {
      x = 2;
   }
   static int x;
};
int test::x = 0;
int main() {
   test::bar();
   test::x = 3;
}
于 2012-03-24T16:01:32.487 に答える