class Hoge { int n; };
とした場合、nは変数の定義になると思います。
この n を静的変数にした場合
class Hoge { static int n; }; int Hoge::n;
のように、クラス外にnの実態を定義する必要があります。
これらを考えると、静的変数でないメンバ変数を、class内に記述した場合
変数の定義として扱われ、静的メンバ変数をclass内に記述した場合
それは宣言であり、class外でのインスタンス化を定義と考えるべきでしょうか?
それとも、class内に記述した静的変数は定義であり
class外の記述は、インスタンス化しただけであると考えるべきでしょうか?