dynamic initializer和全局变量
2016-03-23 15:26
295 查看
“慎用全局变量,包括全局静态变量“ 是众所周知的原则,因为全局变量除了会增加程序的维护成本。
如果全局变量是个复杂的对象,并且还使用其他的全局变量,那情况就变得复杂的多。因为全局变量初始化的顺序不是coder所能掌控的。
而初始化全局变量就是所谓的”dynamic initializer“,即动态初始化。把全局变量局部化,可以解决全局变量之间的依赖引起的初始化顺序不确定的问题。
比如:
static OSD_Environment env1("CSF_UnitsLexicon");
可以写成:
OSD_Environment& get_env1()
{
static OSD_Environment env1("CSF_UnitsLexicon");
return env1;
}
如果全局变量是个复杂的对象,并且还使用其他的全局变量,那情况就变得复杂的多。因为全局变量初始化的顺序不是coder所能掌控的。
而初始化全局变量就是所谓的”dynamic initializer“,即动态初始化。把全局变量局部化,可以解决全局变量之间的依赖引起的初始化顺序不确定的问题。
比如:
static OSD_Environment env1("CSF_UnitsLexicon");
可以写成:
OSD_Environment& get_env1()
{
static OSD_Environment env1("CSF_UnitsLexicon");
return env1;
}
相关文章推荐
- dynamic initializer和全局变量
- dynamic initializer和全局变量
- linux下安装gitlab
- Nginx Location配置总结
- 世界是数字的 读书笔记
- CSDN中用到的图片
- ContentProvider使用
- 打开pdf文件
- Ajax缓存原理
- 树莓派初次开机for mac
- IP地址与端口号
- BZOJ1066蜥蜴
- hrbust 1430 哈理工oj 1430 神秘植物【递推+矩阵快速幂】
- Android高德地图开发流程
- PHP框架相关
- hadoop java.lang.RuntimeException: java.lang.NoSuchMethodException
- 微信博客
- vim中末行去掉^M
- 228. Summary Ranges
- 在Eclipse中关联Android Private Libraries中文件的源代码