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

时间:2008-11-07 21:03:09

标签: c++ explicit-constructor

其实我的问题都在标题中 总之:
我有一个类,我使用显式构造函数:
.H

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

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

2 个答案:

答案 0 :(得分:22)

不,不是。 explicit关键字仅在标头中允许。我的gcc说:

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

代码如下:

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

explicit foo::foo(int) {}

答案 1 :(得分:0)

关于后续问题(你真的应该作为一个单独的问题提交),初始化列表与构造函数的实现(它的函数体)一起使用,它可能位于头文件或cpp文件中。