在C/ c++中,全局变量像我的教授认为的那样糟糕吗?
当前回答
我通常对很少改变的值使用全局变量,如单例或动态加载库中函数的函数指针。在多线程应用程序中使用可变全局变量往往会导致难以跟踪错误,所以我尽量避免将其作为通用规则。
使用全局变量而不是传递参数通常更快,但如果您正在编写一个多线程应用程序(您现在经常这样做),它通常不会很好地工作(您可以使用线程静态,但性能收益是值得怀疑的)。
其他回答
全局变量是不好的,如果它们允许您操作应该只在本地修改的程序的某些方面。在面向对象编程中,全局变量经常与封装思想相冲突。
是的,但是在停止使用全局变量的代码并开始编写使用全局变量的代码之前,您不会招致全局变量的成本。但成本依然存在。
换句话说,这是一种长期的间接成本,因此大多数人认为这并不坏。
正如有人在另一篇文章中所说的那样:“在你完全理解这样做的后果之前,不应该打破这样的规则。”
有时候,全局变量是必要的,或者至少是非常有用的(例如,处理系统定义的回调)。另一方面,他们也非常危险,因为所有你被告知的原因。
编程的许多方面可能应该留给专家去做。有时候你需要一把非常锋利的刀。但在你准备好之前,你不能使用它……
绝对不是。但是滥用它们……这很糟糕。
出于某种原因而无意识地删除它们只是……盲目的。除非您知道其优点和缺点,否则最好避免使用全局变量,并按照您学到的方法进行操作,但全局变量并没有什么隐含的错误。当你了解了利弊后,最好自己做决定。
安全并不意味着任何一个可以操纵变量声明的全局,为这一解释这个例子中如果你有平衡作为一个全局变量在你们银行程序用户函数可以操纵以及银行职员也可以操纵这这是一个问题只有用户应该考虑到只读和退出函数,而是银行的职员可以添加量当用户亲自给的现金在桌子上。这就是它的运作方式