我有一个C++项目和学习设计模式(我对C++很新).我有一种情况,我认为单身人士将是一个解决方案.(现在等到你们都去之前等待等待:单身人士是baaaaaad.让我们全部投票并烧掉那个异教徒用户!!!!)
我运行了这里找到的示例:https: //stackoverflow.com/a/1008289/2336887
...但在使用C++ 11版本时出现错误.
我的问题不在于是否应该使用Singleton.它已被覆盖得足够多了.
我的问题是:为什么删除公共构造函数而不是简单地保留私有构造函数?如果它停留在那里,则会发生对已删除构造函数的错误调用.我不明白,这让我感到沮丧.有人可以对C++新手有所了解吗?
这是避免转到其他帖子的代码:
class S {
public:
static S& getInstance(){
static S instance;
return instance;
}
private:
S() {}
public:
S(S const&) = delete;
void operator=(S const&) = delete;
};
int main() {
S bus = S::getInstance();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助......耐心等待.
ps:我本来可以把这个问题添加到原帖中,但是在这一点上我认为它会带来更多的噪音.
为什么要删除公共构造函数而不是简单地保留私有构造函数呢?
因为公共构造函数是一个复制构造函数.这是被删除的,因为它不需要,不应该使用.私有构造函数是一个默认构造函数,它是内部使用所必需的(在某些时候,必须构造一个单例!)
为什么要删除公共构造函数而不是简单地保留私有构造函数呢?
单身人士的核心理念是只有一个实例.如果允许复制对象,则可能有多个实例.这就是删除单例的复制构造函数的原因:使单例不可复制.
如果它停留在那里,则会发生对已删除构造函数的错误调用.我不明白,这让我感到沮丧.
由于您尝试复制不可复制的对象,因此出现错误.不要试图复制单身人士.我怀疑你被邀请参考单身人士:
S& bus = S::getInstance();
Run Code Online (Sandbox Code Playgroud)