C++ 静态变量与成员

C++ 静态变量与成员,c++,C++,如果某个类的数据将被修改,并且需要在整个程序中保留,但只在一个成员函数中使用,那么最好将该变量设置为其所在例程的局部静态变量,还是将其设置为该类的成员?问题不是“数据是否会在整个程序中使用”,而是“如果你创建了这个类的两个对象,你想让它们共享这个数据吗?”如果是,则将其设置为静态。如果没有,就不要。我认为在大多数情况下,您不应该使用局部静态变量,而应该使用静态成员变量。然后问题就归结为该变量是否应该在类实例之间共享。将局部变量声明为静态意味着您的方法现在有状态,与对象的状态分离。在维护此代码(如

如果某个类的数据将被修改,并且需要在整个程序中保留,但只在一个成员函数中使用,那么最好将该变量设置为其所在例程的局部静态变量,还是将其设置为该类的成员?

问题不是“数据是否会在整个程序中使用”,而是“如果你创建了这个类的两个对象,你想让它们共享这个数据吗?”如果是,则将其设置为静态。如果没有,就不要。我认为在大多数情况下,您不应该使用局部静态变量,而应该使用静态成员变量。然后问题就归结为该变量是否应该在类实例之间共享。

将局部变量声明为静态意味着您的方法现在有状态,与对象的状态分离。在维护此代码(如复制构造函数实现、赋值、序列化)和读取此代码(方法行为不明确)时,可能会导致许多错误。

除非您有充分的理由(我唯一能想到的是单线程单音实现),否则请避免使用静态局部变量。

谢谢。我忘记了,即使是类成员函数中的局部静态变量也被该类的所有对象共享。