通过提供私有构造函数,可以防止在此类之外的任何地方创建类实例。提供这种构造函数有几种用例。
答:您的类实例是在static方法中创建的。static然后将该方法声明为public。
class MyClass()
{
private:
MyClass() { }
public:
static MyClass * CreateInstance() { return new MyClass(); }
};
B.你的课是单身。这意味着程序中最多只能有一个类实例。
class MyClass()
{
private:
MyClass() { }
public:
MyClass & Instance()
{
static MyClass * aGlobalInst = new MyClass();
return *aGlobalInst;
}
};
C.(仅适用于即将到来的C ++ 0x标准)您有几个构造函数。其中一些被宣布public,另一些被宣布private。为了减小代码大小,公共构造函数会“调用”私有构造函数,这些私有构造函数依次完成所有工作。public因此,您的构造函数称为委托构造函数:
class MyClass
{
public:
MyClass() : MyClass(2010, 1, 1) { }
private:
MyClass(int theYear, int theMonth, int theDay) { /* do real work */ }
};
D.您想限制对象复制(例如,由于使用共享资源):
class MyClass
{
SharedResource * myResource;
private:
MyClass(const MyClass & theOriginal) { }
};
E.您的课程是实用程序课程。也就是说,它仅包含static成员。在这种情况下,程序中永远都不能创建对象实例。