如果我使用显式构造函数,是否需要将关键字放在.h和.cpp文件中?

che*_*r89 16 c++ explicit-constructor

实际上我的问题都在标题中.
无论如何:
我有一个类,我使用显式构造函数:
.h

class MyClass
{
  public:
    explicit MyClass(const string& s): query(s) {}
  private:
   string query;
}
Run Code Online (Sandbox Code Playgroud)

是否必须在实现(.cpp)文件中放置显式关键字?

Gre*_*ill 23

不它不是.该explicit关键字仅在标题中允许.我的gcc说:

test.cpp:6: error: only declarations of constructors can be 'explicit'
Run Code Online (Sandbox Code Playgroud)

对于以下代码:

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

explicit foo::foo(int) {}
Run Code Online (Sandbox Code Playgroud)