在C++的專用部分聲明構造函數有什麼用? 我們可以在private部分聲明好友函數和構造函數,但有什麼用?專用部分的構造函數
0
A
回答
0
如果你聲明構造函數爲private
,除了類本身之外,沒有人可以創建它的新實例。最有可能的是,有一個靜態方法返回一個類實例。這賦予了對給定程序中存在的實例數量的一些控制。
singleton pattern是這種做法的一個應用。通過使用私有構造函數和其他一些技巧,可以確保只存在該類的單個實例,因爲用戶不能自己創建一個new
實例。
0
有許多私有構造函數的情況。
例如:
- 限制對象創建
- 對於單模式
- 限制某些類型構造(例如複製構造,默認的構造)
私有構造意味着用戶不能直接實例化一個類。相反,您可以創建對象,並在其中創建可以創建和返回類實例的靜態類函數。
另一個用途是prevent inheritance of your class,因爲派生類將無法訪問您的類的構造函數。當然,在這種情況下,你仍然需要一個創建類的實例的函數。
此外,它通常用於通過靜態成員函數訪問對象的單例模式,否則每個人都可以創建類的實例,因此它不再是單例。對於一個單例,根據定義,只能存在一個實例。
0
E.g.通過將構造函數設爲私有,您可以控制對象的構造。也許你希望只有n個對象實例同時存在。您可以創建一個計算此功能的函數。另請參見單例模式
相關問題
- 1. 部分類構造函數
- 2. 部分專業化模板類複製構造函數
- 3. DbContext的專用構造函數
- 4. 專門的模板類構造函數
- 5. C++構造函數模板專門化
- 6. 專業模板類構造函數
- 7. AS3函數內部構造函數與函數外部構造函數
- 8. .Net如何爲分部類構造一個構造函數?
- 9. 函數內部的Javascript構造函數
- 10. 內部構造函數
- 11. Dart內部構造函數
- 12. 內部類的構造函數調用
- 13. 使用try/catch內部調用另一個構造函數的構造函數
- 14. 構造函數內的構造函數
- 15. 構造函數中的調用基構造函數和其他構造函數
- 16. Scala - 分解構造函數
- 17. 函數模板的部分專業化
- 18. variadic模板函數的部分專精
- 19. 完全專用模板中構造函數的線外定義
- 20. 專用構造函數的測試框架
- 21. GWT實現Serializable接口 - 專用的默認構造函數
- 22. 外部調用拷貝構造函數和析構函數
- 23. 構造函數在父類中的值不分配給專用變量
- 24. 嘗試,抓住內部構造函數,調用基構造器
- 25. 構造函數調用具有參數的構造函數
- 26. 用構造函數
- 27. 用構造函數
- 28. 專用繼承構造
- 29. 分裂類型應用構造函數
- 30. 構造函數調用分配內存?
一種情況是禁用在堆棧上創建的對象。 – billz