C++ static

什么是static,用来干什么的,解决什么问题

c/c++的修饰符,控制变量的存储方式和可见性。函数内部定义的变量,执行到的时候为它在栈上分配空间,函数结束后释放,如果要保留这个值到下次调用的时候,就需要加static。如果用全局变量,会破坏变量访问范围。

如何控制存储方式

全局静态存储区

全局(静态)存储区:分为DATA和BSS(Block started by symbol)段,DATA段存放初始化的全局变量和静态变量,BSS段存放未初始化的全局变量。

静态数据成员要在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化。所以,也不能在类内初始化为一个值,必须在类外初始化。

如何分配空间

在类的外部接口的头文件,或者main函数之前。int Point::m_nPointCount;这样就可以。

static可以用在哪,以及作用

  1. 修饰局部变量

    只初始化一次,延长生命周期。

  2. 修饰全局变量
    限定只能本文件内访问。

  3. 修饰函数
    限定只能本文件内访问。

全局变量和全局静态变量的区别

不显式用static修饰的变量作用域是整个工程,可以被外部文件用extern访问。

如何使用static变量和static方法

通过类名.变量/方法来访问,不需要new一个类。或者类名::静态成员名


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!