C++ 为什么不鼓励使用全局变量

投稿- 2023-08-20 17:54:03

C语言中用const声明全局变量赋初值和不赋初值有何区别 变量存放位置有什么不一样

大家好,关于C++ 为什么不鼓励使用全局变量很多朋友都还不太明白,今天小编就来为大家分享关于测试用例不建议全局变量的知识,希望对各位有所帮助!

本文目录

  1. C语言全局变量的优缺点
  2. 结构体与全局变量优缺点
  3. C++ 为什么不鼓励使用全局变量
  4. 如何尽量地避免使用全局变量

C语言全局变量的优缺点

当然有道理,因为全局也不是万能的。全局变量优点:

1.全局可视,任何一个函数都可以访问和更改变量值。

2.内存地址固定,读写效率高缺点:1.容易造成命名冲突2.当值不正确或者出错时,很难确定是哪个函数更改过这个变量3.不支持多线程

结构体与全局变量优缺点

优点:

1)全局可见,任何一个函数或线程都可以读写全局变量-同步操作简单。

2)内存地址固定,读写效率比较高。

缺点:

1)全局变量存放在静态存储区,系统需要为其分配内存,一直到程序结束,才会释放内存,这一点就局部变量的动态分配,随用随从栈中申请,用完(函数调用完毕)就释放。

2)影响函数的封装性能:我们肯定是希望我们写的函数具有重入性,就如一个黑盒子一般,只通过函数参数就能得到返回,内部实现要独立,但是如果函数中使用了全局变量,这势必就破坏了函数的封装性,会造成对全局变量的依赖。

3)降低函数的移值性,原因同上。

4)降低代码的可读性,这也意味着系统维护会不方便,因为一个全局变量可能会出现程序中的各个环节,函数的执行也会根据环境变化而变化,所以调试会不太方便。

5)全局变量的读写,可能会延迟,这主要是体现在“写”操作上,由于写操作,一般需要2个周期操作,所以有可能会出现,这边没写完时,那边已经读了,结果读到的不是最终值,这个是一个概率事件,概率很小,但是并不代表没有。

C++ 为什么不鼓励使用全局变量

因为全局变量容易导致代码的可复用性下降,以及对象管理的困难。试想,如果某个类使用了全局变量,则移植该类的时候,必须将全局变量也一起移植。更可怕的是,如果这个全局变量还是一个对象,并且初始化也在不同的类中实现,那么所有这些代码将被永久捆绑在一起,无法分离了。任何一个与此全局变量相关联的代码一旦有改动,即可对其他使用该变量的代码产生不可预知的影响。相较于全局变量,用户可以使用单例来替代,并且保证单例的初始化只在本类方法中实现,外部只是单纯的获取或者暂存。这种方式可以降低全局变量带来的麻烦。

如何尽量地避免使用全局变量

使用一个get_xxx和set_xxx接口函数应该可以防止全局变量漫天飞吧。

不用全局变量也不是不可以,但是要牺牲Flash空间,多一些额外的RAM,还有多一些执行时间。一刀切也不好,本来有些芯片内存就少,不用全局怎麼办?看实际情况酌量使用也没坏处

如果你还想了解更多这方面的信息,记得收藏关注本站。

图一的变量为全局变量时不能运行,图二为局部变量运行成功,求解答
  • 声明:本文内容来自互联网不代表本站观点,转载请注明出处:bk.66688815.com/12/101152.html
上一篇:BWL老1会掉些什么装备(bwl老一怎么bug)
下一篇:b型轻度地中海贫血能够吃含铁食物吗(b型轻度地中海贫血症状)
相关文章
返回顶部小火箭