其实我的问题都在标题中
总之:
我有一个类,我使用显式构造函数:
.H
class MyClass
{
public:
explicit MyClass(const string& s): query(s) {}
private:
string query;
}
是否必须在实现(.cpp)文件中加上显式关键字?
答案 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文件中。