实例方法中的静态变量 - 如何解决?

时间:2012-08-10 02:42:03

标签: c++ oop design-patterns static

最近,我继承了一些有趣模式的10岁代码库。其中包括实例方法中的静态变量。只实例化了该类的单个实例,我很难找到理由在实例方法中证明这些静态变量的存在。

  1. 您是否曾使用静态变量设计过实例方法?你的理由是什么?

  2. 如果这种模式被认为是坏的,那么如何解决?

  3. 注意:此问题与Static variables in instance methods

    无关

    编辑:

    一些阅读:

    1. static class and singleton
    2. http://objectmentor.com/resources/articles/SingletonAndMonostate.pdf
    3. http://www.semantics.org/once_weakly/w01_expanding_monostate.pdf

3 个答案:

答案 0 :(得分:4)

  1. 这是singleton模式的经典C ++实现,在Scott Meyers C ++书籍中有描述。
  2. Singleton是controversial pattern,所以对于单身人士的好坏没有全行业的共识。
  3. 单身人士的替代品是纯粹的静态物品。这个question有一个很好的讨论。

答案 1 :(得分:2)

关于我在instanciable类中使用静态字段的唯一时间一直是常量。

一般来说,您可能希望将您的类创建为完全静态或完全不可变(可能除了您可能希望保持静态的常量之外)。使用单例类,它们的行为方式大致相同。混合这两种技术的危险在于,如果你决定让这个类不再是一个单例,你可能会在你现在的多实例类中遇到一些奇怪的行为。

答案 2 :(得分:2)

拥有静态变量在过程函数中很有用,因为它可以作为一种范围有限的全局变量。

我可以看到在一个方法中做这样的事情的唯一原因是让变量在许多调用中持续存在,而不必声明一个不能用于其他目的的成员变量。老实说,我觉得这只是懒惰的编程,应该避免。