如何创建只能由其自己的类调用的构造函数?因此,当我有一个 Class 时Foo
,如果它是从Foo
.
问问题
162 次
2 回答
12
您可以将构造函数设为私有:
class Foo
{
private:
Foo();
public:
static Foo* Create() { return new Foo(); }
}
并使用静态方法Create()
创建类的实例。
将构造函数设为静态的主要原因可能是强制通过工厂、单例或类仅包含静态方法来创建对象。即,一个典型的单例实现(为简单起见,单线程):
class Singleton
{
private:
Singleton();
public:
static Foo& GetInstance() { static Foo Instance; return Instance; }
}
于 2013-08-11T15:35:23.420 回答
10
将构造函数设为私有:
class Foo
{
Foo();
public:
static void usesFooConstructor();
static Foo& makeInstance(); // only if you need a handle to an instance
};
于 2013-08-11T15:35:20.827 回答