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は、まったく別物の変数となります。
- - 関連記事 -
- externキーワードで外部ファイルの変数・関数を利用
- モジュールとは