这个词"静态"在静态类意味着什么?

时间:2017-03-24 20:25:36

标签: static

我知道什么是静态类我想更多地了解单词" static"。 当我搜索单词" static"我得到了很多定义,从大多数定义来看,我认为静态不会移动(固定到位)。这样对吗? 这个词是什么意思?这个词在哪里来自历史?

提前谢谢。

1 个答案:

答案 0 :(得分:-2)

Static是一个用于为元素赋予特殊特征的关键字。静态元素在静态存储区域的程序生命周期中仅分配一次存储。他们有一个范围,直到程序生命周期。静态关键字可以与函数中的以下静态变量一起使用。

在C编程语言(及其紧密的后代,如C ++和Objective-C)中,static是一个保留字,用于控制生命周期(作为静态变量)和可见性(取决于链接)。 static这个词也用在受C影响的语言中,比如Java。

在C中,static是一个存储类(不要与面向对象编程中的类混淆),extern,auto和register(也是保留字)。每个变量和函数都有这些存储类之一;如果声明未指定存储类,则使用依赖于上下文的默认值:

extern用于源文件中的所有顶级声明, auto用于在函数体中声明的变量。 存储级终身可见性 外部程序执行外部(整个程序) 静态程序执行内部(仅限翻译单元) 自动,注册函数执行(无) 在这些语言中,术语“静态变量”有两个容易混淆的含义:

与程序具有相同生命周期的变量,如上所述(与语言无关);或

(C-family-specific)使用存储类static声明的变量。 存储类extern的变量,包括在顶级声明但没有显式存储类的变量,在第一个含义中是静态的,而不是第二个含义。

静态关键字在声明变量或函数时加前缀可能会产生其他影响,具体取决于声明的位置。

静态全局变量

在源文件的顶层(在任何函数定义之外)声明为static的变量仅在该文件中可见(“文件范围”,也称为“内部链接”)。

静态局部变量

在函数内声明为静态的变量是静态分配的,因此在整个程序执行期间保持其内存单元,同时具有与自动局部变量(自动和寄存器)相同的可见范围,这意味着保持函数的本地。因此,在一次调用期间函数放入其静态局部变量的任何值在再次调用函数时仍然存在。

静态成员变量

在类定义中声明为static的成员变量是类变量(在所有类实例之间共享,而不是实例变量)。

静态功能

类似地,静态函数 - 在源文件的顶层(在任何类定义之外)声明为静态的函数 - 仅在整个文件中可见(“文件范围”,也称为“内部链接”) )。

静态方法

类似地,静态方法 - 在类定义中声明为static的方法 - 意味着与类的所有实例相关,而不是与任何特定实例相关。