18

実際、私の質問はすべてタイトルにあります。
とにかく:
クラスがあり、明示的なコンストラクターを使用しています:
.h

class MyClass
{
  public:
    explicit MyClass(const string& s): query(s) {}
  private:
   string query;
}

実装(.cpp)ファイルに明示的なキーワードを入れることは義務ですか?

4

2 に答える 2

24

いいえそうではありません。explicitキーワードはヘッダーでのみ許可されます。私のgccは言う:

test.cpp:6: error: only declarations of constructors can be 'explicit'

次のコードの場合:

class foo {
public:
    explicit foo(int);
};

explicit foo::foo(int) {}
于 2008-11-07T21:03:56.413 に答える
0

フォローアップの質問 (実際には別の質問として送信する必要がありました) に関して、初期化リストはコンストラクターの実装 (その関数本体) と共に使用されます。これは、ヘッダーまたは cpp ファイルのいずれかにある可能性があります。

于 2008-11-08T00:50:50.823 に答える