在C++中,关键字static有以下几种作用:
1. 修饰变量:当static修饰一个局部变量时,该变量在程序的生命周期内只被初始化一次,并且在函数调用结束后仍然保持其值,直到下一次函数调用时才会重新初始化。当static修饰一个全局变量时,该变量的作用域仅限于当前文件,其他文件无法访问。
2. 修饰函数:当static修饰一个函数时,该函数只能在定义它的源文件中可见,其他文件无法使用该函数。这种函数称为静态函数或内部函数。
3. 定义静态类成员:在类中使用static关键字定义的成员是类的静态成员,不依赖于类的实例而存在,并且所有类的实例共享同一个静态成员。静态成员可以被类的所有实例访问,也可以通过类名直接访问。
4. 定义静态局部变量:在函数内部定义的静态局部变量与常规局部变量不同,它在程序的生命周期内只被初始化一次,并且在函数调用结束后仍然保持其值,直到下一次函数调用时才会重新初始化。静态局部变量的作用域仅限于定义它的函数内部。
总的来说,static关键字的作用是限定变量和函数的作用域,并且在一定程度上提供了对共享数据的支持。