我不知道这个概念是否有名字。我有一个班级声明;
class A
{
public:
...
private:
static A* me;
}
答案 0 :(得分:4)
没有更多代码来诊断意图,它看起来很像 Singleton模式的实现。
stackoverflow和维基百科上有很多参考资料;
你会发现可能有一些“获取实例”方法或朋友工厂方法的实现。
class A {
public:
static A* getInstance();
// or
friend A* getInstance();
private:
static A* me;
};
为什么要这样做?引用维基百科
在软件工程中,单例模式是一种设计模式,将类的实例化限制为一个对象。
答案 1 :(得分:1)
我之前在Singletons
中看过这个。
单例是一个只能在内存中存在一次的对象。为了达到这个目的,你可以“隐藏”它的构造函数,并将它的实例暴露给一个访问器(如getInstance()
)到对象的私有静态实例。这就是为什么它保留了一个私有指针。
这个想法是每次调用getInstance()
时都会返回指向静态实例的指针。这样就可以确保Class只有一个实例。
可以找到关于Singleton的教程here
答案 2 :(得分:1)
单独它没有重要意义。但是,如果再加上static A& getInstance()
函数,它看起来更像是单例模式。
单例模式基本上是一种只创建该类的1个实例的方法,该实例在程序的任何地方都使用。
我更喜欢实现此模式的另一种方式。除个人偏好外,没有特别的理由使用这种实施方式。
class A{
private:
class A(){} //To make sure it can only be constructed inside the class.
class A(const A&) = delete;
class A(A&&) = delete; //To make sure that it cannot be moved or copied
public:
static A& getInstance(){
static A inst; //That's the only place the constructor is called.
return inst;
}
};
希望有所帮助。