私有构造函数类的特点
- 不能实例化,因为实例化时类外部无法访问类的私有构造函数;
- 不能被继承,因为派生类无法调用类的私有构造函数
- 可以通过定义一个static方法或者友元类来创建类对象
示例
利用在某个static函数中创建了该class的对象,并以引用或者指针的形式将其返回,不能以值的形式返回(在函数执行完毕之后,对象会自动销毁,失去作用域)。
class WonderfulClass
{
public:
static WonderfulClass* makeAnObject()
{
// 创建一个WonderfulClass对象并返回其指针
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;
}