18

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

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

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

4

2 回答 2

24

不它不是。该explicit关键字只允许在标题中使用。我的 gcc 说:

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

对于以下代码:

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

explicit foo::foo(int) {}
于 2008-11-07T21:03:56.413 回答
0

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

于 2008-11-08T00:50:50.823 回答