显然,非静态成员函数可以读取静态数据。实际上,这是拥有静态数据的重要原因之一——使实例成员函数可以读取它。
但是,从面向对象设计的角度来看,是否存在将非静态成员函数更新静态数据变量的好理由?
我知道一个简单的例子,我们可能想要保持特定对象已创建实例的计数器。所以我们可以让构造函数更新一个静态的int计数器。像这样:
class Foo
{
static int ctr;
Foo()
{
ctr++;
}
}
除了这个特定的例子,还有没有其他好的一般理由来更新静态变量的非静态函数?
个人认为这似乎有点傻,但我无法确定究竟是什么困扰着我。