如何创建一个只能由自己的类调用的构造函数?因此,当我有一个类时,Foo
如果从静态成员调用它,则只使构造函数可调用Foo
.
Ser*_* K. 12
您可以将构造函数设为私有:
class Foo
{
private:
Foo();
public:
static Foo* Create() { return new Foo(); }
}
Run Code Online (Sandbox Code Playgroud)
并使用静态方法Create()
创建类的实例.
使构造函数静态化的主要原因可能是通过工厂,单例或类仅包含静态方法来强制创建对象.即,典型的单例实现(单线程,为简单起见):
class Singleton
{
private:
Singleton();
public:
static Foo& GetInstance() { static Foo Instance; return Instance; }
}
Run Code Online (Sandbox Code Playgroud)
jua*_*nza 10
使构造函数私有:
class Foo
{
Foo();
public:
static void usesFooConstructor();
static Foo& makeInstance(); // only if you need a handle to an instance
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
161 次 |
最近记录: |