Почему нестатическая переменная не может находиться в файле заголовка?

Возьмем для примера:

// myheader.h
static int myStaticVar = 0;
// If we remove 'static' the compiler will throw linker error.

void DoStuff();

// and myheader.cpp, and main.cpp;  etc

Вот как я бы это объяснил:

Статические переменные не имеют внешней связи, и когда мы компилируем без 'static' мы «включаем» статическую переменную (которая здесь глобальная) в каждый файл, что создает дубликаты, и компоновщик выдаст ошибку, поскольку множественное объявление не допускается.

Есть ли лучший способ объяснить это? Спасибо.

PS: Мы предполагаем, что в заголовочном файле должны быть статические переменные (не говоря уже о членах)?

6
задан CppLearner 21 October 2011 в 08:45
поделиться