首页 > 其他 > 详细

static关键字<很详细>

时间:2020-12-18 14:38:04      阅读:26      评论:0      收藏:0      [点我收藏+]
static关键字的作用
C中static的作用
修饰一:静态局部变量
在修饰局部变量的时候,初始化局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。如果未对其初始化,系统会对默认初始化0或\0;

修饰二:静态全局变量
这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。其他文件中也可以定义和该变量一样的名字且不会冲突;

修饰三:静态函数
和静态全局变量一样,只能在该文件中被调用,其他文件不能调用。

C++中static的作用
C++中static的作用除了具有C中的作用之外还具有以下作用:

修饰一:静态数据成员
1、静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间;
2、静态数据成员可以被初始化,但是只能在类体外进行初始化,若未对静态数据成员赋初值,则编译器会自动为其初始化为0;
3、静态数据成员既可以通过对象名引用,也可以通过类名引用。

修饰二:静态成员函数
1、静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员;
2、静态成员函数没有this指针;
3、静态成员函数主要用来访问静态数据成员而不能访问非静态成员。

【简单延伸一点:为什么静态成员不能访问非静态成员?】
首先static的成员是在类加载的时候初始化的,JVM的CLASSLOADER的加载,首次主动使用加载,而非static的成员是在创建对象的时候,即new 操作的时候才初始化的;

先后顺序是先加载,才能初始化,那么加载的时候初始化static的成员,此时非static的成员还没有被加载必然不能使用,而非static的成员是在类加载之后,通过new操作符创建对象的时候初始化,此时static 已经分配内存空间,所以可以访问!

简单点说:静态成员属于类,不需要生成对象就存在了.而非静态需要生成对象才产生。

static关键字<很详细>

原文:https://blog.51cto.com/15051869/2566462

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!