2012-02-11 14 views
13

私は静的メンバー関数を持っています。これは私にとっては構文的な砂糖です。私は、パラメータを渡す動作の代わりにその本体を表示したいと思います。静的メンバー関数をインライン化できますか?

inline static foo(int a) {return a & 0x00000040;} 

はちょうどそれがstaticをせずにinlineした場合と同じように、インライン化されますか?

+1

インライン展開の場合と同様に、答えは「依存します」です。 'foo'に関数ポインタをどこかで渡したいのですが? –

答えて

13

コンパイラは何をしたいかを選択します。そのため、コンパイラは何をするかを選択することはできません。つまり、機能がstaticであれば、それがインライン化されるのを防ぐことはできません。 static関数は基本的に、異なる名前付けスタイルとクラスのプライベートメンバーへのアクセスを持つ自由な関数です。

+0

彼らは1つの重要な点で自由な機能とは異なります:プライベートメンバーへのアクセス – John

+0

@Johnああ、それは重要な違いです。 –

+0

クラス内の定義は、とにかくインライン化することを意味しませんか? –

0

静的メンバーメソッドにはthisパラメーターがないため、静的メンバー変数にのみアクセスできます。

メソッドがインライン化されているかどうかとは異なります。したがって、2つは互いに独立しています。

コンパイラは、メソッドがインライン化されるかどうかを判断します。キーワードの使用は、単にコンパイラのヒントに過ぎません。

関連する問題