オブジェクト指向プログラミング言語において、クラスに付随している変数のことです。
プログラミング言語によって呼び名は異なり、静的メンバ変数や静的フィールド、クラスフィールドといった呼び方があります。
なお、「クラス型の変数」とは異なります(それはオブジェクトやインスタンスと呼ばれるものです)。
クラス内で宣言される変数には、インスタンス変数(メンバ変数、インスタンスフィールドなどとも呼ばれる)と、クラス変数とがあります。インスタンス変数はオブジェクトごとに別個に存在するのに対し、クラス変数はオブジェクトがいくつ作られたとしても(また、作られないとしても)、たった1つの実体が存在し、すべてのオブジェクトから共有されます。
クラス変数の実体はクラスがロードされた時点で作られます。それはほとんどの場合、プログラムの実行開始の時点という意味です。そうであれば、クラス変数の記憶域期間はプログラムの実行開始から終了までということになり、静的変数であるといえます。
C++ では、クラス定義の内側で宣言した変数のうち、static指定子を付加したものがクラス変数です。C++ の規格上の用語としては、staticデータメンバが適切ですが、静的メンバ変数(staticメンバ変数)と呼ばれることが非常に多いです。
静的メンバ変数はプログラムの実行開始の時点で存在しており、実行終了まで存在します(静的記憶域期間)。
静的メンバ変数について、C++編【言語解説】第18章で解説しています。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |