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

bob*_*obo 6 c++ extern

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

静态类变量

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

// .cpp file
int MyClass::x = 0 ;
Run Code Online (Sandbox Code Playgroud)

外部变量:

// .h file
extern int y;

// .cpp file
int y = 1;
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*our 4

是的,两者都有静态存储期限和外部联动;它们本质上具有相同的运行时属性,只是(编译时)可见性不同。