c++ - 什么时候全局变量实际上被认为是好的/推荐的做法?

标签 c++ c global-variables

我已经阅读了很多关于全局变量为什么不好以及为什么不应该使用它们的文章。然而,大多数常用的编程语言都以某种方式支持全局变量。

所以我的问题是仍然需要全局变量的原因是什么,它们是否提供了一些无法替代实现的独特且不可替代的优势?与用户指定的自定义间接寻址相比,全局寻址有什么好处来检索其本地范围之外的对象?

据我所知,在现代编程语言中,全局寻址与计算内存地址的每个偏移量具有相同的性能损失,无论它是从“全局”用户内存开始的偏移量还是从this 或任何其他指针。因此,就性能而言,用户可以在需要的狭窄情况下使用通用指针间接伪造全局变量,而不会将性能损失为真实的全局变量。还有什么?真的需要全局变量吗?

最佳答案

全局变量通常不是因为它们的性能不好,而是因为在非常大的程序中,它们很难封装所有内容 - 存在信息“泄漏”,这通常会使弄清楚发生了什么变得非常困难上。

基本上,您的变量的范围应该只是您的代码既能工作又相对容易理解所需的范围,仅此而已。在打印十二次表的程序中使用全局变量是可以管理的,但在数百万行的会计程序中使用全局变量就不太好了。

关于c++ - 什么时候全局变量实际上被认为是好的/推荐的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18547700/

相关文章:

python - 无法在 Ubuntu 的 Python 中导入 FANN

c++ - 如何在另一个类中初始化我的对象数组

c++ - QT creator如何让一个UI生成的类继承其他类?

c - 当我 "make"valgrind 时,出现错误

python - 如何在 Python 中获取全局变量?

c++ - 查看visual studio 2010中一个线程获得了多少锁?

iphone - 如何在 iPhone 中获取两天之间的差异

c - 如何使用 libcurl 函数 "curl_easy_setopt(CURL *handle, CURLOPT_DNS_LOCAL_IP4, char *address);"

python - 蓝图中的 Flask 应用程序对象

javascript - 为什么函数内的 javascript 全局变量显示错误?