如果我不想让任何人创建我的类的实例,除了我的静态函数(我想这就是所谓的单/工厂?),是它足以让默认的构造函数私有,或我是否也需要显式定义并使私有拷贝构造函数和赋值运算符?C++私有构造
Q
C++私有构造
3
A
回答
2
是的,我会做所有3个管理员功能。如果不是,您不希望能够访问复制构造函数。例如,这是有效的:
Singleton * s;
Singleton copy(*s);
所以做这样的事情:
class Singleton
{
private:
Singleton();
Singleton(const Singleton &);
Singleton & operator = (const Singleton &);
};
0
是的,通常你必须。如果没有,你可以通过拷贝构造一个新的对象:
MyClass newObject = your_singleton_of_type_MyClass;
在这种情况下,拷贝构造函数发出后,实际创建两个对象。通过使该代码非法,使复制构造函数专用可防止复制。
0
如果你只想要一个实例,那么,拷贝构造函数应该是私有的。赋值运算符无关紧要,因为无论如何都无法使用。
3
使得constuctor私人是工厂方法模式。单例模式需要工厂方法。
如果您不希望复制类,那么boost将具有不可复制性,但正如James McNellis已经评论的那样:决定用户是否应该能够复制该类。因为原始指针和固有内存管理不应该在类中占有一席之地,所以复制类的问题主要针对使用资源或可能是大容器的类。
相关问题
- 1. 私有构造
- 2. 私有构造
- 3. 与私有构造
- 4. C++私人构造类
- 5. 公共新的私有构造
- 6. 错误:构造函数是私有
- 7. 的std ::地图和私有构造
- 8. JsonSerializationException类型与私有构造函数
- 9. 定义私有类的构造函数
- 10. CallInst构造函数是私有的?
- 11. Java Spring bean与私有构造函数
- 12. KScenemer在Lucene有私人构造函数
- 13. 使类构造函数私有
- 14. 私有构造函数和继承(Java)
- 15. constexpr构造对象与私有成员
- 16. Java的CDI和私有的构造
- 17. 构造函数是私有的?
- 18. 私有构造在科特林
- 19. 私有初始化的C++构造函数
- 20. C++私有构造函数(带参数)不允许实例
- 21. C++单身使用:编译器抱怨私有构造函数
- 22. 如何测试与私有的构造函数C++
- 23. 从C++中的私有模板类继承构造函数
- 24. C#中私有构造函数的需求是什么?
- 25. 在java中,如何使用其父类也有私有构造函数的私有构造函数创建类?
- 26. 私人类的构造函数是否必须是私有的?
- 27. 使用私有构造函数和私有静态方法调用类?
- 28. 访问私有内部类中重写的方法与私有构造
- 29. 具有私有辅助功能的默认构造函数
- 30. Java:访问带有类型参数的私有构造函数
这取决于;你想让这个类的消费者能够复制你的静态函数返回的实例吗? – 2010-11-03 22:38:13
不,我只想要一个全局实例 – baruch 2010-11-03 22:41:05
@baruch:所以只能做一个。 – GManNickG 2010-11-03 22:47:24