static的用法有哪些?
(1)修饰局部变量。局部变量的生存期为声明之后,直至当前代码块结束。若使用static声明,该变量将变为静态持续性,存放在静态存储区,存在于整个程序运行周期。同时保证每个进入该代码块,变量保持上一次退出时的值。
(2)修饰全局变量。会改变全局变量的链接性,使用static修饰后,全局变量由外部链接性变为内存链接性,这样其他源文件不能使用extern变量使用该变量,该变量只能在当前文件内共享访问。
(3)修饰函数。函数默认具有外部链接性,同普通全局变量一样。使用static修饰后,其他源文件不能使用extern来使用该函数。该函数为内部链接性,当前文件可访问。
(4)修饰成员变量。修饰成员变量后,该变量将不在类对象的内存布局当中,存在于静态存储区。该变量存在于类对象声明之前,即使没有任何一个类对象声明,该变量依然存在。所有的类对象共享一份实例。
(5)修饰成员函数。静态成员函数不能访问普通成员变量,只能访问静态成员变量。同时不需要通过类实例进行调用。