如何在不使用私有构造函数的情况下创建单例类?
How do I make a singleton class without using private constructor?
有没有办法使一个类的单例没有一个私有构造函数?
这样做的优点和缺点是什么?
在c++ 11中,您可以删除构造函数而不是将其设为私有。
struct Widget{
Widget()=delete;
};
删除构造函数的优点:
指定一个已删除的构造函数来代替私有减速的优点是,当用户试图调用它时,它将创建一个更直观的错误消息。也可以说,它为那些阅读你代码的人提供了更好的意图。
私有构造函数的优点:
它将与该语言的旧标准兼容,并具有更广泛的编译器支持。
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 为什么不调用移动构造函数?(默认情况下只有构造器,没有别的)
- 如何在没有复制构造函数的情况下为地图设置值?
- 在没有默认构造函数的情况下创建的派生对象
- 在双重继承的情况下如何处理非标准构造函数
- 如何在不知道属性具有哪些构造函数的情况下初始化属性?
- 在 C++ 中,默认情况下构造函数为类的数据成员提供的值是多少?
- 如何防止类中的类对象尝试在没有默认构造函数的情况下自动构造自身?
- 为什么在这种情况下调用非常量右值移动构造函数?
- 在没有构造函数的情况下初始化 const c++ 类
- 在不使用默认构造函数的情况下声明 POD 结构时,会实例化什么?
- 父类有 26 个构造函数重载.如何在不复制+粘贴 26 个重载的情况下将一个小任务附加到所有构造器?
- 您可以在不调用构造函数的情况下调用攻击器吗?
- 在不调用构造函数的情况下创建 Vector 元素
- 默认情况下,我如何在不使用继承的情况下使用所有构造函数
- 在不调用其构造函数的情况下创建对象
- 在没有朋友的情况下向私有构造函数授予访问权限
- 构造函数/解构函数情况下的'undefined reference to vtable for'
- c#和c++中虚函数情况下编译器行为的差异.这是我在一次采访中被问到的问题