300 字
2 分钟
C++入门 (八) : C++中的局部静态
生命周期的意思是变量实际的存在时间,也就是变量在被删除之前在内存中停留多久 作用域就是我们可以访问这个变量的范围
局部静态的作用就是生成一个生命周期跟程序一样,但作用域仅限于该代码块中的变量
void Func(){ static int i = 0; i++; std::cout << i < std::endl;}int main(){ Func(); Func(); Func(); Func(); Func(); // 结果是 1 2 3 4 5}等价于: 但是上例的int只在函数里能使用,而下例的i是全局的变量
int i = 0;void Func(){ i++; std::cout << i < std::endl;}int main(){ Func(); Func(); Func(); Func(); Func(); // 结果是 1 2 3 4 5}单例类
只存在一个实例对象的类;
常规方法实现
#include<iostream>class Singleton {private: static Singleton* s_instance; // 设置为static是为了只有一个实例public: static Singleton& Get(){ return *s_instance; } void printHello(){ std::cout << "print Hello" << std::endl; }};Singleton* Singleton::s_instance = nullptr;
int main(){ Singleton::Get().printHello(); return 0;}有了局部static我们可以这样实现
#include<iostream>class Singleton {public: static Singleton& Get(){ static Singleton s_instance; //会被定义在堆上 return s_instance; } void printHello(){ std::cout << "print Hello" << std::endl; }};
int main(){ Singleton::Get().printHello(); return 0;} C++入门 (八) : C++中的局部静态
https://dingfengbo.vercel.app/posts/c入门/08-c中的局部静态-local-static/