私有構(gòu)造函數(shù)類的特點(diǎn)
- 不能實(shí)例化,因?yàn)閷?shí)例化時(shí)類外部無(wú)法訪問(wèn)類的私有構(gòu)造函數(shù);
- 不能被繼承,因?yàn)榕缮悷o(wú)法調(diào)用類的私有構(gòu)造函數(shù)
- 可以通過(guò)定義一個(gè)static方法或者友元類來(lái)創(chuàng)建類對(duì)象
示例
利用在某個(gè)static函數(shù)中創(chuàng)建了該class的對(duì)象,并以引用或者指針的形式將其返回,不能以值的形式返回(在函數(shù)執(zhí)行完畢之后,對(duì)象會(huì)自動(dòng)銷毀,失去作用域)。
class WonderfulClass
{
public:
static WonderfulClass* makeAnObject()
{
// 創(chuàng)建一個(gè)WonderfulClass對(duì)象并返回其指針
return (new WonderfulClass);
}
private:
WonderfulClass() { }
};
int main()
{
WonderfulClass *p = WonderfulClass::makeAnObject();
... // 使用*p
delete p; // Not neccesary here, but it's a good habit.
return 0;
}