私が知る限り、クラス内で定義されたすべての非静的メンバー関数は暗黙的にインライン化されています。 これは、静的メンバー関数にも同じものが有効かどうか、関数を複数の異なる翻訳単位で複数定義できることを考えています。例として静的メンバー関数は暗黙的にインライン化されたクラス内で定義されていますか?
:
class Foo {
public:
static void static_f(void) { std::cout << static_data << std::endl; } //Is it inline?
static void static_f2(void); //I guess it isn't
private:
static int static_data;
int non_static_data;
};
PS:
9.4.1静的メンバ関数[class.static.mfct] 1 [注:この文書(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf)で、私は、この行を発見:9.3で説明した規則は、静的メンバー関数に適用されます。 - エンドノート]
以前セクション9.3で:
メンバ関数が定義されてもよいそれは、インラインメンバ関数である場合 そのクラス定義における(8.4)、(7.1.2 )[...]
はい、あなたが心配している場合は、 'inline'キーワードを投げても問題はありません。 –
この関数は 'inline'になります。つまり、インライン* –