代码之家  ›  专栏  ›  技术社区  ›  Moberg

方法上的local关键字是否表示自动存储?

  •  1
  • Moberg  · 技术社区  · 8 年前

    变量将在 local function 类内有静态还是自动?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Matthew Taylor    8 年前

    “存储策略”是 一生 。它将始终是自动的。IEEE 1800-2012第8.6节规定

    声明为类类型一部分的方法的生存期应是自动的。申报 使用静态生存期初始化方法。

    可以将类方法声明为 static ,但在这种情况下,它的含义完全不同。第8.10节规定:

    静态方法不同于具有静态生存期的任务。前者是指方法的生命周期 在类中,后者指的是任务中参数和变量的生存期。

    因此,即使不存在该类的对象,也可以调用静态方法。

        2
  •  0
  •   dave_59    8 年前

    这个 local 或 protected 类成员的属性对存储策略没有影响。它只影响用于访问成员的标识符的可见性。

    也就是说,类成员的存储策略 而且 影响该标识符的可见性。因此,这两种功能都可以限制访问,但原因不同。

    例如,您永远不能从声明自动变量的范围之外访问它。这个作用域是类方法还是简单任务并不重要。而且该范围的默认生存期是多少并不重要。

    相反,如果在某个范围内声明静态变量,则可以从该范围外访问该变量,但需要考虑所有其他可见性规则。

    推荐文章