方法中的静态局部变量是不好的做法?

Man*_*nux 9 c++ variables static

有些东西让我烦恼.

在非线程程序中,最好是使用本地静态变量(内部方法)还是静态类成员?

在这个例子中:

class C{
public: 
  C(){};
  void foo();
};

void C::foo(){
  static int bar = 0;
  bar++;
  printf("%d\n",bar);
}
Run Code Online (Sandbox Code Playgroud)

如果bar单独使用它会被认为是一种不好的做法C::foo()吗?

Fal*_*rri 7

两者都不是更好.它们服务于非常不同的用例

  • @IIyan,他的代码中的语义是"打印多少次'foo'被称为!".从他在问题中可以看到的,这与类的状态无关,因此将变量作为静态类成员是完全错误的.但是,如果`foo`是复制构造函数而`bar`将被称为`numberOfCopies`,那么它将是静态类成员的一个很好的候选者.所以它取决于它的使用方式. (12认同)
  • 答案的开头听起来很有希望,但你能详细说明吗? (4认同)