调用已删除的的构造函数

时间:2019-01-04 16:27:02

标签: c++

我有一个C ++项目,并且沿途学习设计模式(我对C ++很陌生)。我有一种情况,我认为单身人士是一个解决方案。 (现在,等一下,等等,等一下,所有人都去了:单身人士是baaaaaad。让我们全力以赴,烧掉那个异端用户!!!)

我运行了以下示例:https://stackoverflow.com/a/1008289/2336887

...但是在使用C ++ 11版本时出现错误。

我的问题不是是否应该使用Singleton。它已被覆盖得足够多。

我的问题是: 为什么要删除公共构造函数,而不仅仅是保留私有构造函数? 如果停留在该位置,则会发生对已删除构造函数的错误调用。我不明白,这让我很沮丧。有人可以对C ++新手有所启发吗?

以下是避免去另一篇文章的代码:

sendResponse

感谢您的帮助...耐心等待。

p.s .:我可以将问题添加到原始帖子中,但是在这一点上,我认为这会带来更多的麻烦。

2 个答案:

答案 0 :(得分:5)

  

为什么要删除公共构造函数,而不仅仅是保留私有结构   一个?

因为公共构造函数是副本构造函数。由于不需要并且不应使用该内容,因此将其删除。私有构造函数是默认的构造函数,供内部使用(在某个时候,必须构造一个单例!)

答案 1 :(得分:5)

  

为什么要删除公共构造函数,而不仅仅是保留私有构造函数?

单例的核心思想是只有一个实例。如果允许复制对象,则可能有多个实例。这就是删除单例的复制构造函数的原因:使单例不可复制。

  

如果停留在该位置,则会发生对已删除构造函数的错误调用。我不明白,这让我感到沮丧。

出现错误,因为您尝试复制不可复制的对象。不要尝试复制单例。我怀疑您应该改为引用单身人士:

S& bus = S::getInstance();