static(C/C++) 使われ方によって意味が違います。
- 関数につける場合
 他のファイルから参照できなくなります。
- メンバ関数につける場合
 ほぼ関数と同じ扱いになります。
 つまりthis等が使えないしstatic以外のメンバは呼べませんがスコープはそのままです。
- (C++) メンバ変数につける場合:
 すべてのインスタンス共有になります。
- (C++) 関数内の変数につける場合:
 ヒープに領域がとられ、毎回同じ部分が参照されます。
- グローバル変数につける場合:
 他のファイルから参照できなくります。
- inline(C++)
 インライン展開されます。
 インライン展開とはマクロ関数に近いですが、関数やメンバ関数と同じように書けます。
 一般的にインライン展開すると、関数呼び出しによるオーバーヘッドがなくなるので 実行速度ははやくなりますが、実行ファイルのサイズが増えます。
 またinline指定しなくてもコンパイラの最適化の設定によっては勝手にinline展開されます。

コメント