让我们说我的班级让我说
static classA myObject;
void classA::update(int elapsed)
{
static int sumElapsed = 0;
sumElapsed+= elapsed;
}
似乎我的问题很难理解。但是如果我们说myObject是classA的单例。本地静态int sumElapsed与classA的私有成员int sumElapsed之间是否存在差异,除了可以访问它们的范围之外。
答案 0 :(得分:3)
不确定。例如,在单身模式中。静态变量的引用(或指针)也从静态方法返回。
有关示例,请参阅此处:c++ Meyers singleton undefined reference
顺便说一句,如果您有兴趣:Are Singletons really that bad?
答案 1 :(得分:0)
如果你不想覆盖sumElapsed那么肯定,但看起来将classA中的sumElapsed封装为静态变量似乎更有意义。
答案 2 :(得分:0)
实际上,当你在类模板中需要某种静态成员时,首先没有真正好的选择。此外,如果成员不是微不足道的,那么您可能希望首先将它们放入函数中,以便对初始化顺序进行一定程度的控制。
一般来说,要注意无论是将静态成员放入类还是函数中,它仍然有效地实现了Singleton 反模式!
答案 3 :(得分:0)
当然。如果sumElapsed
不是静态的,那么每次调用函数时它都会被覆盖;事实上,它不会。 classA::update
本身是静态的这一事实无关紧要;只考虑它是否是一个全局函数(例如在C中)。
答案 4 :(得分:0)
您应该使用静态类来保存与特定对象无关的方法。话虽这么说,使用静态类只保存不能被对象实例化的静态成员,不应该被覆盖。