静态变量与成员

时间:2009-11-07 22:31:16

标签: c++

如果您有一个类的数据将被修改并需要在整个程序中保留,但仅在一个成员函数中使用,是否优先使该变量成为它所在的例程的局部静态变量或使其成为班级成员?

3 个答案:

答案 0 :(得分:18)

问题不在于“整个程序中是否会使用数据”,而是“如果您制作此类的两个对象,您是否希望它们共享此数据?”如果是,请将其设为静态。如果不是,请不要。

答案 1 :(得分:6)

我认为在大多数情况下,你永远不应该使用本地静态变量,而是使用静态成员变量。然后问题退化为是否应该在类实例之间共享该变量。

答案 2 :(得分:3)

将局部变量声明为静态意味着您的方法现在具有状态,与对象的状态分开。在维护此代码(例如复制构造函数实现,赋值,序列化)和读取它时(不清楚的方法行为),它可能会导致许多错误。
避免使用静态本地,除非你有充分的理由(我唯一能想到的是单线程单线程实现)。