在C++的专用部分声明构造函数有什么用? 我们可以在private部分声明好友函数和构造函数,但有什么用?专用部分的构造函数
0
A
回答
0
如果你声明构造函数为private
,除了类本身之外,没有人可以创建它的新实例。最有可能的是,有一个静态方法返回一个类实例。这赋予了对给定程序中存在的实例数量的一些控制。
singleton pattern是这种做法的一个应用。通过使用私有构造函数和其他一些技巧,可以确保只存在该类的单个实例,因为用户不能自己创建一个new
实例。
0
有许多私有构造函数的情况。
例如:
- 限制对象创建
- 对于单模式
- 限制某些类型构造(例如复制构造,默认的构造)
私有构造意味着用户不能直接实例化一个类。相反,您可以创建对象,并在其中创建可以创建和返回类实例的静态类函数。
另一个用途是prevent inheritance of your class,因为派生类将无法访问您的类的构造函数。当然,在这种情况下,你仍然需要一个创建类的实例的函数。
此外,它通常用于通过静态成员函数访问对象的单例模式,否则每个人都可以创建类的实例,因此它不再是单例。对于一个单例,根据定义,只能存在一个实例。
0
E.g.通过将构造函数设为私有,您可以控制对象的构造。也许你希望只有n个对象实例同时存在。您可以创建一个计算此功能的函数。另请参见单例模式
相关问题
- 1. 部分类构造函数
- 2. 部分专业化模板类复制构造函数
- 3. DbContext的专用构造函数
- 4. AS3函数内部构造函数与函数外部构造函数
- 5. C++构造函数模板专门化
- 6. 专业模板类构造函数
- 7. 函数内部的Javascript构造函数
- 8. Dart内部构造函数
- 9. 内部构造函数
- 10. 内部类的构造函数调用
- 11. 使用try/catch内部调用另一个构造函数的构造函数
- 12. 构造函数内的构造函数
- 13. 构造函数中的调用基构造函数和其他构造函数
- 14. Scala - 分解构造函数
- 15. 函数模板的部分专业化
- 16. variadic模板函数的部分专精
- 17. 外部调用拷贝构造函数和析构函数
- 18. 专用构造函数的测试框架
- 19. 完全专用模板中构造函数的线外定义
- 20. GWT实现Serializable接口 - 专用的默认构造函数
- 21. 构造函数在父类中的值不分配给专用变量
- 22. 尝试,抓住内部构造函数,调用基构造器
- 23. 构造函数调用具有参数的构造函数
- 24. 用构造函数
- 25. 用构造函数
- 26. 分裂类型应用构造函数
- 27. 构造函数调用分配内存?
- 28. 朱利亚参数构造函数 - 外部构造函数的问题
- 29. 全局构造函数调用不在.init_array部分
- 30. 在Typescript中部分应用类构造函数
一种情况是禁用在堆栈上创建的对象。 – billz