C++のstaticの役割とは?

C++のstaticキーワードは複数の意味を持ちます。

  1. 関数内の変数にstaticをつけると、その変数が関数呼び出し間で永続性を持つことになります。つまり、関数呼び出し間で値が保持され、最初に宣言したときに初期化され、関数呼び出し間でそれらの値を保持します。これは、複数の関数呼び出し間で変数を共有する場合に使用できます。
  2. 関数の外側でstatic修飾でグローバル変数を定義すると、その変数のスコープはそのファイルのみに限定されます。他のファイルでは、同じ名前のグローバル変数を宣言していても、その変数にはアクセスできません。これにより、グローバル変数の名前の衝突を避けることができます。
  3. クラス内でstatic修飾子を使用すると、変数は各オブジェクトごとに保持されるのではなく、クラスの全てのオブジェクトで共有されます。このような変数はクラス変数または静的メンバ変数とも呼ばれます。
  4. クラスにstatic修飾したメンバ関数を用いると、その関数は特定のオブジェクトインスタンスに依存せず、クラス名で直接呼び出すことができます。このような関数はクラス関数または静的メンバ関数とも呼ばれ、オブジェクトの状態に依存しないため、非静的メンバ変数や非静的メンバ関数にはアクセスできません。

staticキーワードは変数の生存時間とスコープの制御、そしてクラスで共有されるメンバー変数やメンバー関数の定義に使用できます。

bannerAds