静态类变量是否与外部变量相同,只有类范围?

时间:2011-10-27 14:31:37

标签: c++ extern

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

静态类变量

extern int x

外部变量:

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

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

是。

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

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

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

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