kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

C++のはずかしいミス

正確にはC++/CLIでのお話。

class hoge {
  private void foo(void) {
     static int bar; 
  }
};

これでclass hogeのオブジェクトのライフサイクルが終了したので、deleteして、新しくhogeをnewすると、foo()の中のbarも初期化されると思っていたorz。変なところで初期化されていないな〜と思って言語仕様を見ると、初期化されないようなことが書いてあった。
結局クラス内スコープに変更したのだけれど、関数内のスコープでよい変数なので、どうも気持ち悪い。