実際、私の質問はすべてタイトルにあります。
とにかく:
クラスがあり、明示的なコンストラクターを使用しています:
.h
class MyClass
{
public:
explicit MyClass(const string& s): query(s) {}
private:
string query;
}
実装(.cpp)ファイルに明示的なキーワードを入れることは義務ですか?
実際、私の質問はすべてタイトルにあります。
とにかく:
クラスがあり、明示的なコンストラクターを使用しています:
.h
class MyClass
{
public:
explicit MyClass(const string& s): query(s) {}
private:
string query;
}
実装(.cpp)ファイルに明示的なキーワードを入れることは義務ですか?
いいえそうではありません。explicit
キーワードはヘッダーでのみ許可されます。私のgccは言う:
test.cpp:6: error: only declarations of constructors can be 'explicit'
次のコードの場合:
class foo {
public:
explicit foo(int);
};
explicit foo::foo(int) {}
フォローアップの質問 (実際には別の質問として送信する必要がありました) に関して、初期化リストはコンストラクターの実装 (その関数本体) と共に使用されます。これは、ヘッダーまたは cpp ファイルのいずれかにある可能性があります。