static作用(C/C++)
来源:互联网 发布:2017网络作家排行 编辑:程序博客网 时间:2024/06/14 06:14
变量
在《C程序设计语言》中是这么解释的:
通过static限定外部对象,可以达到隐藏外部对象的目的。
举个例子:
在a.c文件中
#include<stdio.h>int index=0;int func(void){ ...}
如果想让a.c中定义的index只能给a.c文件中的函数使用,其他文件的函数不能调用。那么要在index之前加上关键字static作为前缀。
#include<stdio.h>static int index=0;int func(void){ ...}
这样,在同一程序的不同的文件中也可以定义同名变量,同名函数,不需要担心有名字冲突。
static也可用于声明内部变量。static类型的内部变量同自动变量一样,是某个特定函数的局部变量,只能在该函数中使用,但它与自动变量不同的是,不管其所在函数是否被调用,它一直存在,而不像自动变量那样,随着所在函数和退出而存在和消失。static虽然只能在某个特定函数中使用但一直占据存储空间的变量。
函数
static函数只能在该函数声明所在的文件可见。
静态成员
与类本身有关,而不是和某个成员有关
《C++ Primer》中举了个例子:
一个银行账户类需要一个数据成员来表示当前的基准利率。我们希望基准利率与类相关,而不是和类的每个对象都有关联。而且也没必要每个对象都存储基本利率。但是一旦基准利率改变,我们希望所有对象都能使用新值。
我们可以通过在成员的声明之前加上关键字static使得其与类关联在一起。
class Account{public: void calculate(){...} static double rate(){return interestRate;} static void rate(double);private: static double interestRate; static double initRate();}
静态成员和静态成员函数不与任何对象绑定在一起,它不包含this指针,因此不能声明成const,也不能是虚函数。
在牛客网看到不错的总结:
https://www.nowcoder.com/questionTerminal/3dcc1dc72db540a4911f17252b84fb7f
来源:牛客网
C中的作用
1、隐藏:当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏.
2、static的第二个作用是保持变量内容的持久:存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。
共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,
说到底static还是用来隐藏的。虽然这种用法不常见
3、static的第三个作用是默认初始化为0(static变量)
C++中的作用
表示这个静态成员或静态函数在类中只有一份实例
1、不能将静态成员函数声明为const,也不能定义为虚函数。
2、静态数据成员是静态存储的,所以必须对它进行初始化。 (程序员手动初始化,否则编译时一般不会报错,但是在Link时会报错误)
3、静态数据成员在<定义或说明>时前面加关键字static。
- static作用(C/C++)
- static关键字的作用(c&&c++)
- c中static作用
- c中static作用
- C的static作用
- c中static作用
- static的作用(c)
- [c/c++]static的作用
- static 作用总结(c/c++)
- [C++]static的作用(转)
- c中static的作用
- c中static的作用
- C/C++ ------ static 的作用
- c 中static的作用
- C中static的作用
- C中static的作用
- c中static的作用
- C中static的作用
- 33.Search in Rotated Sorted Array
- QThread类理解
- Python基本数据类型简单介绍
- 用 BitArray 来编写埃拉托斯特尼筛法
- 技术的正宗与野路子
- static作用(C/C++)
- Photoshop cs5 基础教程 形状图层的布尔运算
- Android Studio Gradle多渠道打包(动态设定App名称,应用图标,背景图片,状态栏颜色)、配置签名文件
- [学习小笔记] hibernate的简单数据库查询
- 认识Hadoop
- 计算机程序的思维逻辑 (72)
- java中实现定时任务每天规定时间执行任务一次
- 动态改变Drawable中我们自定义背景的颜色并设置颜色以16进制进行设置
- android横竖屏切换总结