回答如下:
-
在类中,static关键字可以用于声明
静态成员变量
和静态成员函数
。静态成员变量/函数是与类相关联的变量/函数,在所有对象之间共享,并且只有一份拷贝存储在内存中,对于静态成员变量,一般不能在类内部初始化,只能声明,需要在类外进行定义和初始化,并且不加static。如果需要在类内部初始化,首先它必须是
字面值常量类型的 constexpr
或者static const int 类型
。
所谓字面值类型就是通常遇到的:算术类型,引用,指针,所谓字面值常量类型就是const型的算术类型,引用,指针。constexpr是指常量表达式,即值不会改变并且在编译过程中可以得到计算结果的表达式。为了帮助判断是否为一个常量表达式,C++11规定,允许将变量声明为constexpr类型,以便由编译器来进行验证变量是否为一个常量表达式,比如可以写 constexpr static const double = 1.0; 当然,constexpr包含了const关键字,可以省略。对于静态成员函数,
只能访问类的静态成员
,不接受this指针
,可以通过类名::
进行访问。 -
在函数体中,static关键字可以用于声明
静态局部变量
。静态局部变量是指变量在程序执行期间维持其值,并且只初始化一次
。这些变量存储在静态数据区域,而不是堆栈上。 -
在文件作用域内(即不在任何函数或类中),static关键字用于将变量和函数
限定在当前文件内
。这意味这在其它文件中无法使用该变量或者函数。
总之,static关键字可以让开发者能够创建静态变量,静态函数和静态方法,以及限制变量和函数的作用范围。