在我看来,静态类变量与extern变量相同,因为你只在<{1}} / static int x
语句中声明它,并实际定义它其他地方(通常在.cpp文件中)
extern int x
// .h file
class Foo
{
static int x ;
} ;
// .cpp file
int MyClass::x = 0 ;
在这两种情况下,变量都在某处声明一次,并在编译中不会包含多次的文件中定义(否则链接器错误)
答案 0 :(得分:4)
是的,都有静态存储时间和外部链接;它们具有基本相同的运行时属性,只是(编译时)可见性不同。
答案 1 :(得分:2)
或多或少。两者都有外部连接和静态寿命。都 将在程序启动时初始化,并在退出时销毁。
答案 2 :(得分:1)
是。
作为附加信息,在一些使用非可选命名空间/模块的编程语言中,静态类变量可以与全局变量交换。
在某些情况下,那些其他编程变量甚至没有静态类变量,而是可以使用全局变量。
一些开发人员更喜欢使用静态类变量,强制它与类的关系。
即使两个功能都可用,它也是您如何设计应用程序的问题。