ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

static 关键字作用

2021-12-18 17:06:09  阅读:233  来源: 互联网

标签:stastic 函数 静态 成员 关键字 对象 static 全局 作用


1.全局静态变量

在全局变量之前加入关键字stastic,全局变量就定义成一个全局静态变量。  例如 static int a

内存中位置:静态储存区   在整个程序运行期间一直存在。

初始化:未经初始化的全局静态变量会被自动化初始为0,(自动对象的值是任意的,除非他被显示初始化)。

作用域:全局静态变量在声明它的文件之外是不可见的, 从定义之处开始,到文件结尾。

2.局部静态变量

在局部变量之前加入关键字static,局部变量就变为一个局部静态变量。(函数体内部变量为局部变量)   例如  int fun(static int a)

初始化:同上

作用域:仍为局部作用域,当定义它的函数或语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后并没有销毁,而是任然驻留在内存当中,只不过我们不能再对它进行访问,知道该函数再次被调用,并且值不变。

3.静态函数

函数返回值类型前加stastic,函数被定义为静态函数。函数的定义和声明默认是external的,但静态函数只是在声明它的文件当中可见,不能被其他文件所用。   stastic int fun(int a)

函数的实现使用stastic修饰,那么这个函数只可在本cpp内使用,不会同其他cpp内的同名函数冲突。

不要在头文件中声明stastic的全局函数,不要在cpp内声明非stastic的全局函数,如果你要在多个cpp内复用该函数,就把它声明到头文件里去,否则cpp内部声明需加上stastic修饰。

4.类的静态成员变量

在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。对多个对象来说,静态数据成员只存储一处,供所有对象共用。 所有对象共用同一份数据。

编译阶段分配内存  全局区   

 类内声明类外初始化    类外访问不到私有成员

 通过对象进行访问  通过类名进行访问

 

 非静态必须通过对象访问。   

成员: 类中的函数  属性 -----成员函数  成员属性

5.类的静态成员函数

静态成员函数和静态数据成员一样,他们都属于静态成员,他们都不是对象成员。因此,对静态成员的引用不需要对象名。

在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员(这点非常重要)。如果静态成员函数中要引用非静态成员时,可通过对象来引用。从中可看出,调用静态成员函数使用如下格式:<类名>::<静态成员函数名>(<参数表>);

本质:静态成员函数中没有this指针。  带类域的全局函数

标签:stastic,函数,静态,成员,关键字,对象,static,全局,作用
来源: https://blog.csdn.net/weixin_51785242/article/details/122012279

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有