相关疑难解决方法(0)

C++ singleton vs完全静态对象

假设我们需要在项目中只有一个类的一个实例.有几种方法可以做到这一点.

我想比较一下.请你复习一下我的理解.

1)古典单身模式

2)完全静态类(所有方法和成员都是静态的).


据我所知,差异如下:

a)未定义跨不同单元的静态成员的初始化顺序.因此,完全静态成员初始化不能使用来自其他模块的任何静态成员/函数.而单身人士没有这个问题.

b)我们必须处理Singleton的getInstance()的线程.但是,完全静态类没有这个问题.

c)访问方法看起来有点不同.FOO ::巴(); vs Foo :: getInstance() - > bar(); 通常,singleton可以返回NULL来识别构造对象时存在一些问题而静态类不能.

d)对于静态类的一堆静态,类的定义看起来有点笨拙.

我错过了什么吗?

c++ singleton static class

34
推荐指数
3
解决办法
3万
查看次数

静态类和单例

不是一个具有所有静态成员/方法的类是一种单例设计模式吗?有这样的课程有什么不利之处吗?详细解释会有所帮助.

c++ singleton static design-patterns monostate

12
推荐指数
2
解决办法
6939
查看次数

实例方法中的静态变量

假设我有这个程序:

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"对于每个实例都是一样的吗?

c++ static-variables instance-methods

11
推荐指数
1
解决办法
4911
查看次数