当前位置: 首页 > news >正文

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单例模式:

http://www.cnnetsun.cn/news/3359576.html

相关文章:

  • 类与对象:面试官让我用机器人传感器解释封装,我讲了五分钟
  • 01 Java 程序员为什么要聊 AIGC?现在面试到底卷成什么样了
  • Unity DOTS避坑指南:从OOP思维到ECS高性能开发的实战解析
  • SVG 与 Canvas 在前端开发中的区别与应用场景详解
  • C++ CSV解析库RapidCSV:单文件集成与高性能数据处理实践
  • Pandas数据清洗速查手册:12个高频函数实战指南
  • 多家 CDN 试用期地图对比选型:同域不同商的科学方法
  • GPT-5.6 功能介绍:Sol、Terra、Luna 模型定位、核心能力与适用场景
  • MCP3551与PIC18F2680构建高精度数据采集系统
  • 手把手教你学 Simulink—— 新能源(光伏)并网逆变器 MPPT + 并网逆变联合仿真(Boost + 三相 PWM 逆变 + PQ 控制)
  • 多机AI代理编排实战:解决凭证冲突、资源分配与任务同步难题
  • 从零到一:手把手教你用LabelImg构建你的第一个AI数据集
  • 挑战一周学会ROS(第二天)
  • 从让 AI 写代码到让 AI 按规则工作:嵌入式工程师的实践思考
  • 基于XGBoost+LSTM双模型的股票预测系统——“智语析金”智能投研平台
  • VC++机器视觉实战:从OpenCV集成到工业级算法优化
  • 【提示词工程 03 对话模型对齐】从基础模型到可用助手的演进
  • 21-缓存越用越脏-给本地数据加版本过期和重建策略
  • AI Token工厂爆发:清华师生创业半年融资10亿,背后是门什么生意
  • 现代C++软件架构设计:从核心原则到工程实践
  • AI 前沿日报 | 2026年7月13日
  • RAG中PDF文档的处理和存储(二):Markdown文档的分块处理与入库
  • 运算符与表达式
  • 工业信号采集:FOD4216光耦与PIC18F25J11的抗干扰方案
  • HybridCLR热更新开发中UnityLinker.exe报错的系统性排查与解决方案
  • 施工企业合同管控工具测评:蓝燕云全生命周期管理能力
  • Visual C++控制台编程实战:CmdTool工具包设计与实现
  • C#贪吃蛇实战:从零到8KB的零分配与Native AOT优化
  • 爬虫监控与告警系统——成功率/延迟/异常监控与Prometheus+Grafana实战
  • Helloagent chapter8 ragmemory