第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 的方式访问类内的成员;而静态变量和函数的存储空间在堆中,所以这部分数据是可以直接访问的。

posted @   7hu95b  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示