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