static关键字的四种用法:面试官问“static有几种用法”,90%的人答不全

📅 2026/7/14 5:08:52
static关键字的四种用法:面试官问“static有几种用法”,90%的人答不全
上篇聊了const的各种用法,有人后台说想看static。来了。static是C++里另一个"看着简单,考起来要命"的关键字。面试的时候,面试官经常问:"static有哪些用法?"大部分人能说出两三种:静态变量、静态成员函数。但你要问他"还有呢?",很多人就卡住了。其实static在C++里有四种用法,每种的作用完全不同。今天一次讲清楚。第一种:静态局部变量函数里的局部变量加上static,它的生命周期就变成了整个程序运行期间。void countCalls() { static int count = 0; // 只初始化一次 count++; cout "调用次数: " count endl; } countCalls(); // 输出: 调用次数: 1 countCalls(); // 输出: 调用次数: 2 countCalls(); // 输出: 调用次数: 3普通局部变量每次函数调用都会重新创建,但static局部变量只初始化一次,之后每次调用都保留上次的值。在机器人开发里,这种用法常见于计数器、状态标记。比如统计某个函数被调用了多少次,或者标记某个初始化操作是否已经执行过。要注意一点:static局部变量的初始化是线程不安全的。C++11之后,标准保证了static局部变量的初始化是线程安全的(Magic Statics),但老代码或者老编译器不一定有这个保证。在机器人开发里,static局部变量还有个经典用法——Meyers单例模式: