繁体   English   中英

在对象为静态的类的函数中声明静态变量是否有意义?

[英]Does it make any sense to declare a static variable in a class' function where the object is static

可以说我的班级可以说我有

static classA myObject;

void classA::update(int elapsed)
{
  static int sumElapsed = 0;
  sumElapsed+= elapsed;

}

看来我的问题有点难以理解。 但是,如果说myObject是classA的单例。 除了可以访问它们的范围之外,classA的本地静态int sumElapsed和私有成员int sumElapsed之间是否有区别。

当然。 例如在单例模式中。 静态方法的引用(或指针)也从静态方法返回。


有关示例,请参见此处: c ++ Meyers单例未定义参考

顺便说一句,如果您有兴趣: Singletons真的那么糟糕吗?

如果您不希望覆盖sumElapsed,则可以,但是,将sumElapsed作为静态变量封装在classA中似乎更有意义。

实际上,当您在类模板中需要某种静态成员时,首先并没有真正好的选择。 另外,如果成员不是很简单的话,您可能首先想将它们放入函数中,以便对初始化顺序进行某种程度的控制。

通常,请注意,无论您将静态成员放入类还是函数中,它仍然有效地实现了Singleton 反模式

当然。 如果sumElapsed不是静态的,则每次调用该函数时都会被覆盖; 实际上,它不会。 classA::update本身是静态的事实无关紧要; 只考虑它是否是一个全局函数(例如在C中)。

您应该使用静态类来保存与特定对象无关的方法。 话虽这么说,使用静态类仅包含不能被对象实例化且不应被覆盖的静态成员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM