ステートメント:「静的メンバー変数は、静的メソッドによってのみ変更できます。」
このステートメントは正しいですか、それとも静的メンバー変数を非静的メソッドで変更できますか?
ありがとう!
ステートメント:「静的メンバー変数は、静的メソッドによってのみ変更できます。」
このステートメントは正しいですか、それとも静的メンバー変数を非静的メソッドで変更できますか?
ありがとう!
それは間違っています。static
データメンバーは、任意のメンバー関数で変更できます。static
メソッドは、任意のメンバー関数から呼び出すこともできます。
それは不可能な逆です。static
メソッドは非メソッドを呼び出すことも、非メンバーにstatic
アクセスすることもできません。static
これは、static
メンバー(メソッドとデータ)がクラスにバインドされているのに対し、非静的はクラスインスタンスにバインドされているためです。
これは正しくありません。静的メンバーは、非静的メンバー関数によってアクセスおよび変更できます。
ステートメントが正しくありません。静的メンバーは、任意のクラスメンバー関数および静的メンバーが表示される他の関数から変更できます(つまり、パブリック静的はどこからでも変更できます)。
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;
}