Если я использую явный конструктор, нужно ли указывать ключевое слово в файлах .h и .cpp?

StackOverflow https://stackoverflow.com/questions/273630

  •  07-07-2019
  •  | 
  •  

Вопрос

На самом деле мой вопрос в заголовке.
В любом случае:
У меня есть класс, и я использую явный конструктор:
.h

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

Обязательно или нет указывать ключевое слово явное в файле реализации (.cpp)?

Это было полезно?

Решение

Нет, это не так. Ключевое слово явное разрешено только в заголовке. Мой GCC говорит:

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

для следующего кода:

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

explicit foo::foo(int) {}

Другие советы

В ответе на следующий вопрос (который вы действительно должны были представить в виде отдельного вопроса), список инициализации сопровождается реализацией конструктора (его телом функции), который может находиться либо в заголовке, либо в файле cpp.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top