Если я использую явный конструктор, нужно ли указывать ключевое слово в файлах .h и .cpp?
-
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.
Не связан с StackOverflow