2008-11-07 1 views
14

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

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

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

ответ

21

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

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

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

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

explicit foo::foo(int) {} 
+0

Я понял, что он имел в виду ... Я просто прочитал линию между ними. – user2962533 2015-10-16 12:57:56

0

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