当前位置:  开发笔记 > 编程语言 > 正文

静态的不同语言

如何解决《静态的不同语言》经验,为你挑选了2个好方法。

我听说关于关键字含义的语言之间存在差异static,但我没有找到一个合并这些差异的好列表.

以下是我对staticC++中的含义的了解:

对于函数内的局部静态变量,变量在启动时初始化,并且值跨函数调用保存.

静态数据成员在类的所有实例之间共享.换句话说,只有一个静态数据成员的实例.必须在文件范围初始化静态数据成员.

静态成员函数只能访问静态成员.

在递归代码中,保证静态对象或变量在代码块的不同实例中具有相同的状态.

在文件范围定义的静态对象和变量仅具有内部链接.没有其他文件可以使用它们.

static其他语言的变化意义如何?



1> dirkgently..:

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具有静态存储持续时间(3.7.1)或线程存储持续时间(3.7.2)的所有本地对象的零初始化(8.5)在任何其他初始化发生之前执行[...]"

变量具有静态存储持续时间,除非附带thread_local说明符(从C++ 0x开始)

翻译单元中只能有一个静态定义

成员变量/函数意味着它们是类的属性而不是实例Legal访问语法:instance.property或Class :: property

静态成员函数只能访问静态成员变量没有this指针用于此类函数

但是,非静态成员可以访问任何静态成员

在文件级别,对象具有内部链接,但具有类范围的类成员除外

类成员需要在类声明中定义,或者通过类名和作用域解析运算符明确定义

不能this在静态方法中使用


动作脚本


C++中的类方法

不能使用thissuper在静态方法

仅通过类名而不是实例名访问

没有继承

但派生类可以访问base的静态属性

必须在声明常量的同时初始化使用static和const关键字声明的变量


面向对象设计


Singleton设计模式被许多人认为是一个美化的静态对象

用于工厂设计模式


我可能错过了很多其他的东西 - 随意插入.



2> Kenneth Coch..:

在Delphi中,static关键字专门用于定义类方法.在Delphi中,可以将普通类方法声明为虚拟并在子类中重写.另外Delphi有一个变量,类似于其他语言中的this指针.但是在类方法中,self指向调用方法的类而不是实例.

声明类方法static意味着:

    它不能在子类中重写

    它没有自我指针

这意味着静态类方法只能访问其定义的类中的类成员,而普通类方法可以访问派生类中的重写类成员.

在Delphi文档中还有其他非正式的静态用法,通常指的是一个不可加入的特征(是一个单词?).例如静态数组与动态数组.除非另有声明,否则Delphi中的所有实例方法都是静态的

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有