第2讲:static用法总结
几句话总结 static 的用法。
1、静态变量
- 静态变量统一放在特定内存区域中,在程序的整个生命周期内只有一份
- 作用之一:保存上一次的调用状态
- 作用之二:限定访问范围。静态变量只在当前文件有效,即便在其他文件中进行了
extern
声明都无法使用该变量。 - 静态类对象是在主函数之后被销毁的
2、静态成员变量
- 类中的静态变量为类的所有对象共享,而且不能在类内初始化静态变量
原因:每个对象是独立的,如果可以通过对象的方式初始化静态变量,这样就代表每个对象都有一个静态变量了,这和静态变量在整个程序周期内只有一份是违背的!
正确初始化static变量的方法:
- 在类内声明静态变量
static int i
,在类外定义int Apple::i = 0
只能用类名而不能用对象名!因此
Apple::i
是正确的,而obj.i
是错误的
- 不能在
main()
函数初始化,只能写在main函数外层
3. 静态成员函数
- 类中的静态函数和类中的静态变量一样,由类的对象共享。
虽然可以使用
obj.func()
的方式来调用静态成员函数,但还是建议使用Apple::func()
来调用
- 静态成员函数仅允许直接访问静态数据成员或其他静态成员函数,无法访问类的非静态数据或函数
原因:静态成员函数的参数列表没有隐式this指针,导致没法通过
this->var
的方式访问类内的成员;而静态变量和函数的存储空间在堆中,所以这部分数据是可以直接访问的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端