-
03-07-2019 - |
题
我听到的之间存在差异语言的有关意义的关键词 static
, 但是我找不到一个好名单,以此巩固这些差异。
这是什么我知道的意思 static
C++:
- 对地静态变量内的职能,可变是在启动时初始化和价值,是保存在功能的电话。
- 静态数据成员共享的所有实例中的一类。换句话说,只有一个实例,一个静态数据的部件。静态数据成员必须在初始化文件的范围。
- 静态部件的功能具有仅访问静态的成员。
- 在递归码,静态目的或可变的是保证有相同国家的不同实例中的一块的代码。
- 静的对象和变量的定义在文件的范围仅有的内部联系。没有其他文件可以使用它们。
怎么含义 static
改变在其他语言吗?
解决方案
C
- 关键词可以改变任何联系或持续时间(终身)的一个对象。
- 变量总是初始化为0
- 职能的内部联系。
- 如果宣布在文件的级别范围:变量具有内在的联系和静态的持续时间(即存在的整个生命周期的程序)
- 如果宣布在框范围:变量没有联系,但静态的持续时间
- 有多个宣言的相同的静态变量的翻译单元。然而,需要注意的是,他们必须是相同的。例如:在文件的级别范围:
int a; // a has external linkage
static int a; // a now has static linkage
// same as if you wrote: static int a = 0;
//...
static int b; // static linkage
extern int b; // extern loses its meaning, b still has internal linkage
//...
extern int b; // b has external linkage
static int b; // error
//...
void func() {
static int x; // automatic linkage, static duration
// same as if you wrote: static int x = 0;
}
C++
- 在文件的级别范围的使用已经被弃用两个变数和成员在有利于匿名命名空间。存在只是作为兼容性
- 变量仍然得到默认初始化(因为在C)0
- "6.7个零-初始化(8.5)的所有地物体的静态存储的持续时间(3.7.1)或线储存的持续时间(3.7.2)之前执行的任何其他初始化的发生[...]"
- 变量有静态存储持续时间,除非伴随着
thread_local
说明符(C++0x起) - 只能有一个定义的一个静态的翻译单位
- 成员变量/功能意味着他们特性的类和不实例 法律访问的语法:实例。财产或类::酒店
- 静态部件的功能可以仅仅访问静态部件的变量
没有
this
针对这种功能 - 非静态的成员可以访问的任何静态部件
- 在文件级别对象具有内在的联系,除了类成员,其中有一个类范围
- 类成员的需要定义或在类声明或外界明确地通过类的名称和范围的决议员
- 不能使用
this
在一个静态的方法
ActionScript
- 类方法作为在C++
- 不能使用
this
或super
在一个静态的方法 - 访问只能通过类的名称和不实的姓名
- 不是继承的
- 源类然而访问基地'静电特性
- 声明的变量与这两个静态和const关键词必须被初始化的同时如你所宣布的恒
面向对象的设计
- 单独设计的模式是许多人认为一个荣耀的静态对象
- 用于工厂的设计图案
我可能已经错过了很多其他的事情--随片。
其他提示
在德尔斐静态的关键词是专门用于限定类方法。在德尔斐一个 正常的 类方法可以被宣布的虚拟和复盖在一个子类。此外德尔斐有一个 自我 变,类似于 此 指针在其它语言。然而,在一个类方法的 自我 分类的方法是所谓而不是一个实例。
宣布一类的方法 静 意味着:
- 它无法被复盖在一个子类
- 它没有一个 自我 指针
这意味着一个静态的类方法仅可以访问的类成员在类定义中,同时正常类方法可以访问的复盖类成员在得出类。
还有其他的非正式使用的静态的,在德尔斐文通常参照的一个特征unchangability(那是一个词?).例如,一个静态阵列vs一个动态阵列。所有实例的方法,在德尔斐是静态的,除非宣布,否则。
在VB.NET, Static
变量只是喜欢一个C++地静态变量。
然而,没有类范围 Static
;使用 Shared
代替。
C#有3种方法的一个静态的关键词可以用于:
- 在类定义,这意味着类的只会,获得静态的成员,不能instanciated
- 在一个类成员,这意味着该成员可以被称为没有必要instanciate类。
- 在一个构造,这意味着静构造将总是被称为前一个静态部件。(那些主要业绩的瓶颈,并因此不建议)
希望这会有所帮助。
C#它几乎总是指:"相关的类型,而不是一个实例类型"。
蟒蛇有的装饰@staticmethod,这当适用于一类成员,让的方法提供上课,而不是实例,并通过没有自动参数的方法。该@classmethod装饰执行类似的功能,但通过类作为第一个参数,使其更加有用。
在C、静态标志的一个函数或全球变量,如当地的文件的地位。
这有点像私人在其他语言。八九不离十.
如果是在一个功能,然后静态预分配变量在数据部分的二元,而不是在堆在运行时间。
在VB.NET 静用程序的平均变量相关的所有处决过程(这是保存从呼叫呼叫)。这就是一点神秘的使用面向对象的应用程序。
对应方是"共有的"这意味着方法或部件的类型水平(你不需要一个实例访问)。