如果您有一个将被修改且需要在整个程序中保留的类的数据,但仅在一个成员函数中使用,是否优先将该变量设置为本地静态变量例行公事,使其成为班级的一员?静态变量与成员
Q
静态变量与成员
11
A
回答
15
问题不在于“数据是否会在整个程序中使用”,而是“如果您创建了这个类的两个对象,是否希望它们共享这些数据?”如果是,请将其设为静态。如果不是,不要。
4
我会争辩说,在大多数情况下,你不应该使用本地静态变量,而应该使用静态成员变量。然后问题退化为如果该变量应该在类实例之间共享或不共享。
1
将局部变量声明为静态意味着您的方法现在具有独立于对象状态的状态。在维护此代码时(例如复制构造函数实现,赋值,序列化)以及读取代码时(方法行为不清晰),可能会导致很多错误。
避免使用静态本地化,除非你有一些很好的理由(唯一我能想到的是单线程singletone实现)。
相关问题
- 1. C++:静态成员变量
- 2. 静态成员变量
- 3. 静态矢量成员变量
- 4. 静态成员变量初始化
- 5. 访问静态成员变量
- 6. Xcode调试器静态成员变量
- 7. 设置静态成员指针变量
- 8. 静态成员变量初始化C++
- 9. 问题有关静态成员变量
- 10. 静态成员变量出口
- 11. 静态成员变量分配时间
- 12. 静态成员变量赋值
- 13. 子类的静态成员变量
- 14. 命名空间(静态)成员变量
- 15. 静态成员变量和方法
- 16. 静态成员变量文件范围
- 17. 静态成员变量可以调用非静态成员函数吗?
- 18. 模板类的静态const成员变量VS静态常量成员变量的初始化
- 19. 从静态方法访问非静态成员变量
- 20. 内存中的静态成员和静态全局变量
- 21. 必须静态对象实例有静态成员变量吗?
- 22. 访问静态成员静态成员
- 23. 与其他静态const成员初始化静态const成员
- 24. C++:静态成员函数和变量 - 重新定义静态变量?
- 25. 平移正常成员变量静态成员变量导致问题
- 26. 为什么初始化非const和静态const成员变量而不是静态成员变量?
- 27. 静态成员变量与新运营商类
- 28. 奇怪的问题与静态常量成员变量变化值
- 29. 静态数据成员和类的静态函数成员与函数和全局变量中的静态变量存储在同一位置吗?
- 30. 静态成员
谢谢。我忘记了即使类成员函数中的局部静态变量也被该类的所有对象共享。 – Anonymous