使用许多静态成员有问题
Is use of many static members problematic?
在我的C 应用程序中,我有几个类,仅由一些静态成员组成。
其中大多数是双重值或其他基本类型,但是有些是(合理的)大查找表(例如static unordered_map< string, vector< vector< myClassType > > >
...)
变量主要是我在代码中许多不同位置所需的参数和查找表。我不想始终必须交出所有这些参数和表,因此我决定将它们放入不同的类,只是导入类,然后使用变量。
这种方法有什么问题,涉及速度或安全性?在分析过程中,我并没有真正看到任何东西,但是我想知道这是否是"好实践",还是应该以不同的方式处理此问题(我不想使用全球变量,所以我使用了这种方法)。
在使用全球或静态成员之间,您没有完整的更改。
关于安全性,对于静态成员,您一定只有一个实例,在此处http://en.cppreference.com/w/cpp/language/storage_duration(寻找静态零件)
如果多个线程尝试同时初始化相同的静态局部变量,则该初始化恰好发生一次(可以使用std :: call_once的任意函数获得相似的行为)。 注意:此功能的常规实现使用了双检查锁定模式的变体,该变体将已经定位的本地静脉静态的运行时开销降低为单个非原子布尔比较。
相关文章:
- 使用静态成员声明类时遇到问题
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 使用静态成员函数而不是普通函数是否有任何开销?
- 有没有一种快速的方法可以将类的所有静态成员归零?
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 初始化与类类型相同的静态成员(静态初始化顺序问题)
- 常量静态成员函数:有另一种方法可用吗?
- 为什么静态成员函数定义不能有关键字"static"?
- 类中的静态成员变量和C++中的全局变量有什么区别?
- 为什么有一个额外的 & 将非静态成员函数的地址传递给 C++ 中的线程?
- 返回本地静态的函数和返回静态成员的函数之间有什么区别(对象大小、性能等)?
- 长镜头 -- 可能有一个静态类成员,该类成员具有访问非静态成员的 lambda
- 使用许多静态成员有问题
- 有没有一种方法可以使全局函数/静态成员函数一次可呼出
- 我们不能在未赋值的上下文中命名非静态成员函数是有原因的吗
- 静态成员功能和全局功能之间有什么不同
- 一个类本身有一个静态成员的功能是什么?
- MFC C 使用静态成员和编译问题
- 将函数定义为静态成员和自由成员之间有什么区别
- 为什么静态成员函数不能有 cv 限定符?