件名は主にここ ( C++ でクラス スコープ定数を宣言/定義する場所は? ) で、特にここで取り上げられています。
整数定数の場合、私が完全に理解したいのは、次の違いがあります。
//In the header
class A {
private:
static const int member = 0; //Declaration and definition
};
と:
//In the header
class A {
private:
static const int member; //Only declaration
};
//In the cpp
const int A::member = 0; //Definition
(定数の値を変更すると、1つのファイルだけを再コンパイルする必要があるという利点があることを理解しています)
副次的な質問:
たとえば、にアクセスするヘッダーで定義されたインライン メソッドではどうなりますmember
か? 単にインライン化されないのでしょうか? 極端な例として、すべてのメソッドがヘッダー ファイルでインライン メソッドとして定義され、すべての定数が cpp ファイルで定義されている場合はどうなるでしょうか。
編集:
申し訳ありません: 必要ないと思っていましたが、メンバーが静的であるという事実を見逃していました。私の質問は残りますが、コードは合法です。