静的変数の初期化

http://www.geocities.jp/ky_webid/cpp/language/019.html

静的ローカル変数の初期化についてですが、C言語とは仕様が異なることに注意して下さい。C言語では、静的ローカル変数は、プログラムの実行開始時点で初期化されますが、C++では、通常のローカル変数と同様に、変数定義が記述されているところで初期化されます。そのため次のソースは、C言語ではエラーですが、C++では問題ありません。

void func(int num) {
    static int snum = num; // C++ではOK。C言語ではエラー
}

引数に渡した値によってstaticの値を決定できるということは何か面白そうなものが作れそうな気がしないこともないですね。

いずれにせよC言語C++との違いとして押さえておきたいです。