static关键字作用

1. 静态局部变量

在函数内部定义的静态局部变量在函数调用结束后不会被销毁,而是保留其值,直到程序结束。在下次函数调用时,该变量的值仍然保留。这使得静态局部变量具有跨越函数调用的"记忆"功能。

2. 静态全局变量

在全局作用域中定义的静态变量只能被定义它的源文件中的函数访问。这意味着静态全局变量提供了文件作用域,使得变量仅在该文件中可见,而对其他文件是隐藏的。

3. 静态函数

静态函数(非类的静态成员函数)在全局作用域中定义,并且只能被定义它的文件中的其他函数访问。这与静态全局变量的文件作用域类似,但应用于函数。

4. 阻止默认隐式函数调用

在类定义中,将构造函数或析构函数声明为 static 是不合法的,因为构造函数和析构函数与类的实例紧密相关。但是,通过将类的成员函数(包括构造函数以外的成员函数)声明为 static,可以阻止其作为类的成员函数被隐式调用。这通常用于工具函数或不需要访问类实例状态的函数。

5. 静态类成员(已在上文中提到)

包括静态成员变量和静态成员函数,它们与类关联,但不与类的任何特定实例关联。

静态成员变量是类的所有实例共享的变量。无论创建多少个类的对象,都只有一个静态成员变量的副本。静态成员变量通常在类的所有实例之间需要共享某些数据时很有用。

应用场景

假设你正在编写一个表示银行账户的类,并且你想跟踪系统中所有账户的总余额。由于这是一个需要在所有账户实例之间共享的信息,因此可以使用静态成员变量来实现。

相关推荐
weixin_440784115 小时前
【HandlerThread实现原理】
android·java·开发语言
天空'之城5 小时前
C 语言工业级通用组件手写 24:互补滤波
c语言·开发语言·互补滤波·嵌入式算法·工业级组件
leoZ2315 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
XR1234567885 小时前
工厂车间无线网络方案对比:AGV漫游哪家强?
开发语言·php
傻啦嘿哟5 小时前
某短视频平台视频爬虫实战:抓取推荐流视频信息,绕过反爬的3种技巧
开发语言·爬虫·python
現実君6 小时前
【硬件进阶】AD22上位替换JLEDA教程
开发语言·php
mubei-1236 小时前
SpringDAO的用法
java·开发语言·数据库
happymagic6 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
格林威8 小时前
多相机微秒级对齐:硬件触发 vs PTP(IEEE 1588)方案实战对比
开发语言·人工智能·数码相机·机器学习·计算机视觉·视觉检测·机器视觉
都叫我大帅哥9 小时前
给 Java 程序员的 CSRF 攻击详解:从原理到防御实战
java