前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >static关键字的作用总结

static关键字的作用总结

原创
作者头像
_咯噔_
发布2022-03-08 13:56:59
2680
发布2022-03-08 13:56:59
举报
文章被收录于专栏:CS学习笔记CS学习笔记

1、静态全局变量

  • (1)在全局数据区分配内存,静态局部变量也是;
  • (2)未经初始化的静态全局变量会被程序自动初始化为0;
  • (3)静态全局变量作用域是声明此变量所在的文件,其他的文件即使用 extern 声明也不能使用。而在文件之外是不可见的。全局变量可以通过在另一个文件中用 extern 关键字的声明被使用。

2、静态局部变量

  • (1)该变量在全局数据区分配内存;从原来的栈区中存放改变为静态区(全局区)中存放
  • (2)静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
  • (3)静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为 0;
  • (4)它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

3、类相关

  • 修饰类变量,类方法
  • 静态成员可以通过双冒号来使用即 <类名>::<静态成员名>(此时不需要 new 出一个类来)或<对象名>.<变量名>
  • 静态资源是类初始化的时候加载的,而非静态资源是类实例化对象的时候加载的。 类的初始化早于类实例化对象

因此:静态成员函数不能调用非静态成员,静态成员函数能调用静态成员,非静态方法里面能调用静态资源

  • 类的静态成员变量在使用前必须先初始化,但是只能在类定义体外进行初始化,不能在类的内部初始化。
代码语言:javascript
复制
 int Student::count=0;// static关键字只能用于类定义体内部的声明中,定义时不能标示为static
  • 非静态成员函数有 this 指针,而静态成员函数没有 this 指针。
  • const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。
  • static const int a可以在声明的时候初始化,也可以在类外初始化。但不可以通过构造函数初始化列表初始化

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、静态全局变量
  • 2、静态局部变量
  • 3、类相关
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档