static 和 普通的全局变量有什么不同。它在类里面又有什么特点

static全局变量  与  普通的全局变量  区别:  

  1、作用域不同:static全局变量 的作用域  为 定义该变量的源文件 ,也就是只能被该文件中的函数公用,从而避免在其他源文件中引起错误。称为文件作用域。

  2、static全局变量在编译时初始化,也就是在main()函数之前初始化并且仅能初始化一次。

相同点:

  1、静态储存方式:被放在程序的静态数据存储区(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它们与堆变量、堆变量的区别。而局部变量在栈里分配空间

 

总结:

全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围

 

static函数和普通函数区别:
区别
  1.文件作用域:普通函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。好处:其他文件中可以定义相同名字的函数,不会发生冲突。
  2.普通函数在C++类中编译后带一个隐藏的this参数,而static函数不带。

posted @ 2019-12-12 20:13  Litn  阅读(...)  评论(...编辑  收藏