局部静态变量(Local Static)
局部静态变量,能够让变量值在整个程序周期内保持不变,同时限制作用域外的访问。
下面是局部变量使用的一个实例:
#include <iostream>
using namespace std;
void Function ()
{
static int i=0;
i++;
cout<<i<<endl;
}
int main ()
{
Function();
i=10;//会报错
Function();
cin.get();
}
static使得计数器的实现成为可能。把变量i设置为全局变量,其实也可以实现计数器的功能,但是i=10可以随意改变变量取值;相对而言,局部静态变量限制了外部对变量i的修改,使数据更加安全。
来都来了,顺便甩一个运用static的单例模式~
class Singleton
{
private:
static Singleton* s_Instance;
public:
static Singleton& Get() {return *s_Instance;}
void Hello() {}
};
Singleton* Singleton::s_Instance = nullptr;
int main ()
{
Singleton::Get().Hello();//因为不能定义类对象,智能通过应用拿到静态对象指针,再进行操作
}
上面是典型的单例模式,但是可以通过static来简化写法
class Singleton
{
public:
static Singleton& Get()
{
static Singleton instance;
return instance;
}
void Hello(){}
}
int main ()
{
Singleton::Get().Hello();
cin.get();
}
碎碎念
1)使用静态变量时,要注意非静态函数无法引用静态变量
这篇小总结是在Cherno大神,和gpt老师的帮助下写成的,非常感谢他们,也希望对大家有所帮助!