2014-03-29 72 views
0

在C++的專用部分聲明構造函數有什麼用? 我們可以在private部分聲明好友函數和構造函數,但有什麼用?專用部分的構造函數

+0

一種情況是禁用在堆棧上創建的對象。 – billz

回答

0

如果你聲明構造函數爲private,除了類本身之外,沒有人可以創建它的新實例。最有可能的是,有一個靜態方法返回一個類實例。這賦予了對給定程序中存在的實例數量的一些控制。

singleton pattern是這種做法的一個應用。通過使用私有構造函數和其他一些技巧,可以確保只存在該類的單個實例,因爲用戶不能自己創建一個new實例。

0

有許多私有構造函數的情況。

例如:

  • 限制對象創建
  • 對於單模式
  • 限制某些類型構造(例如複製構造,默認的構造)

私有構造意味着用戶不能直接實例化一個類。相反,您可以創建對象,並在其中創建可以創建和返回類實例的靜態類函數。

另一個用途是prevent inheritance of your class,因爲派生類將無法訪問您的類的構造函數。當然,在這種情況下,你仍然需要一個創建類的實例的函數。

此外,它通常用於通過靜態成員函數訪問對象的單例模式,否則每個人都可以創建類的實例,因此它不再是單例。對於一個單例,根據定義,只能存在一個實例。

0

E.g.通過將構造函數設爲私有,您可以控制對象的構造。也許你希望只有n個對象實例同時存在。您可以創建一個計算此功能的函數。另請參見單例模式