【问题标题】:Are static class variables the same as extern variables, only with class scope?静态类变量是否与外部变量相同,仅具有类范围?
【发布时间】:2011-10-27 14:31:37
【问题描述】:

在我看来,静态类变量与外部变量相同,因为您只在 static int x / extern int x 语句中声明它,并在其他地方实际定义它(通常在.cpp 文件)

静态类变量

// .h file
class Foo
{
    static int x ;
} ;

// .cpp file
int MyClass::x = 0 ;

外部变量:

// .h file
extern int y;

// .cpp file
int y = 1;

在这两种情况下,变量都在某处声明一次,并在编译中不会多次包含的文件中定义(否则链接器错误)

【问题讨论】:

    标签: c++ extern


    【解决方案1】:

    是的,两者都有静态存储时长和外部链接;它们具有基本相同的运行时属性,只是(编译时)可见性不同。

    【讨论】:

      【解决方案2】:

      或多或少。两者都有外部链接和静态生命周期。两个都 将在程序启动时初始化,并在退出时销毁。

      【讨论】:

        【解决方案3】:

        是的。

        作为附加信息,在一些使用非可选命名空间/模块的编程语言中,静态类变量可以与全局变量交换。

        在某些情况下,那些其他编程变量甚至没有静态类变量,您可以使用全局变量来代替。

        一些开发者更喜欢使用静态类变量,强制它与类的关系。

        这也是你如何设计应用程序的问题,即使这两个功能都可用。

        【讨论】:

          猜你喜欢
          • 2019-06-08
          • 2016-01-29
          • 2021-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-16
          • 2015-06-19
          • 1970-01-01
          相关资源
          最近更新 更多