Являются ли статические переменные класса такими же, как внешние переменные, только с областью действия класса?

Мне кажется, что статическая переменная класса идентична внешней переменной, потому что вы только объявляете ее в 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;

В обоих случаях переменная где-то объявляется один раз и определяется в файле, который не будет включаться более одного раза в компиляцию (иначе ошибка компоновщика)

6
задан bobobobo 27 October 2011 в 14:31
поделиться