假设我们需要在项目中只有一个类的一个实例.有几种方法可以做到这一点.
我想比较一下.请你复习一下我的理解.
1)古典单身模式
2)完全静态类(所有方法和成员都是静态的).
据我所知,差异如下:
a)未定义跨不同单元的静态成员的初始化顺序.因此,完全静态成员初始化不能使用来自其他模块的任何静态成员/函数.而单身人士没有这个问题.
b)我们必须处理Singleton的getInstance()的线程.但是,完全静态类没有这个问题.
c)访问方法看起来有点不同.FOO ::巴(); vs Foo :: getInstance() - > bar(); 通常,singleton可以返回NULL来识别构造对象时存在一些问题而静态类不能.
d)对于静态类的一堆静态,类的定义看起来有点笨拙.
我错过了什么吗?
不是一个具有所有静态成员/方法的类是一种单例设计模式吗?有这样的课程有什么不利之处吗?详细解释会有所帮助.
假设我有这个程序:
class Foo {
public:
unsigned int bar () {
static unsigned int counter = 0;
return counter++;
}
};
int main ()
{
Foo a;
Foo b;
}
Run Code Online (Sandbox Code Playgroud)
(当然这个例子没有任何意义,因为我显然将"counter"声明为私有属性,但它只是为了说明问题).
我想知道C++在这种情况下的行为:bar()方法中的变量"counter"对于每个实例都是一样的吗?