正直なところ、ヘッダー ファイルの関数 (および場合によってはデータ メンバー) 宣言に含まれるキーワードと、実装ファイルに含まれるキーワードとの間で混乱しています。
従うべき一連のルールは何ですか? 例えば
(コメントごとに更新)
- 関数が「インライン」として宣言されている場合を除き、ヘッダー ファイルには実装が含まれていません。
- データ メンバーには、型が static、const、int/enum (C++11 を除く) でない限り、既定値は含まれません。
- Public/private/protected は通常、ヘッダー ファイルに表示されます
- 「静的」は通常、実装ファイルではなく、ヘッダー ファイルに表示されます。
従うために使用できる他の規則はありますか? コンスト?
継承についてはどうですか?「仮想」はヘッダーファイルにのみ入ると思いますか? クラス A からクラス B に仮想関数を継承する場合、クラス B のヘッダー ファイルはオーバーライドする仮想関数を宣言する必要がありますか? クラス A の純粋仮想関数はどうですか? クラス B でオーバーライドする場合、派生クラスのヘッダー ファイルに純粋仮想関数の定義を含める必要がありますか?