staticキーワードでローカル(プライベート)にする

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

staticキーワードは、C++のプログラミングではよく出てきます。

スポンサーリンク

モジュールプログラミングにおいては、変数や関数が有効となる範囲をファイル内にとどめて、そのファイルに対してローカル(プライベート)にしたい場合に用います。
グローバルに定義されたデータに、staticキーワードを使うと、データがそのファイルに対してプライベート(外部から使用不可、外部と関係なし)という意味を持ちます。

staticキーワードは、それが用いられるスコープによって、違う意味を持ちますので注意です。
関数定義の内部で、staticキーワードが用いられると、それは変数が静的メモリから割り当てられる(一時スタックではない)という意味になります。

staticキーワードの意味のまとめ

・関数本文の外側で、static変数宣言
変数のスコープが、それが宣言されたファイル内となる。(ファイルにプライベート)

・関数の内側で、static変数宣言
一時スタックでなく、静的メモリから割り当てられるので、変数が永続的となる。

・static関数宣言
関数のスコープが、それが宣言されたファイル内となる。(ファイルにプライベート)

・staticメンバ変数
静的メンバ変数となり、クラスにつき変数のコピーが1つのみ作成される。

・staticメンバ関数
静的メンバ関数となり、staticなメンバのみにアクセスするメンバ関数を定義する際に用いる。

staticでファイルにローカルな変数を宣言します。

pj/main.cpp

static int number = 0;
 
int main() {
    // ルーチン
}

pj/sub.cpp

static int number = 3;

どちらのファイルでも、int numberという変数が宣言されていますが、両方ともstaticな変数ですので、その変数のスコープが有効な範囲は、ファイル内となります。
したがって、main.cpp内とsub.cpp内の変数numberは、まったく別物の変数となります。

スポンサーリンク
 
スポンサーリンク