以下 C++11 代码在我的 GCC 4.8 上成功编译:
struct NonStack
{
private:
NonStack() = default;
public:
static NonStack* Create(){
return new NonStack;
}
};
NonStack a;
int main() { }
然而,以下内容会导致编译错误:
struct NonStack
{
private:
NonStack(){}
};
NonStack a;
int main() { }
为什么第一个能够成功?私有的默认构造函数不应该禁止使用 NonStack a;
创建对象吗?为什么第一个能够成功?私有的默认构造函数不应该禁止使用
NonStack a;
创建对象吗?
Create()
成员函数编译通过。 - Praetorianfoo.cc:6:3: error: 'NonStack::NonStack()' is private
等。 - M.M