C语言
在C语言中,static关键字有两个作用:1.修饰变量,2. 修饰函数。
1.修饰变量
1.1全局变量
使得该全局变量只能在本文件中访问,不能直接的跨文件访问。防止了与其他文件中的同名变量冲突,使用extren声明可以跨文件访问。
1.2局部变量。
延长局部变量的生命周期,到整个程序执行结束,正常局部变量出了作用域就会销毁。
2.修饰函数
修饰函数使得该函数只能在本文件中访问,不能直接的跨文件访问。防止了与其他文件中的同名函数冲突,使用extren声明可以跨文件访问。
C++
除了有以上c语言中的两个作用外,static还可以作用在类内的成员变量和成员函数上。
静态成员变量和静态成员函数是所属于整个类的,而不属于某一个实例出来的对象。
1.静态成员变量
所有类的对象共享同一个静态成员变量的副本。
静态成员变量必须在类外部定义,在类内声明。
2.静态成员函数
静态成员函数只能使用static变量。不直接访问非静态成员变量或非静态成员函数,因为没有this指针。
静态成员函数可以通过 [类名::函数名] 直接调用,不用实例化对象