桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

C++のstatic関数

締め切りが月曜日なので、わんくま同盟名古屋勉強会#09*1の発表資料を書きながら、わんくま同盟横浜勉強会#02*2Ustream中継*3を見ていたんですが、static関数の呼び出しについての話題について、デバッグをしていたら実質的に下記のようにぬるぽからstatic関数を呼び出すコードになっているのを見た事がありました。

class CHoge {
public:
  CHoge() {}
  ~CHoge() {}
public:
  static void StaticFunc() {}
};

void main()
{
  CHoge* pHoge = NULL;
  pHoge->StaticFunc();   // これは異常終了しない(少なくともVC++では)
}

この経験から、自分のプロジェクトのコーディング規約では、static関数の呼び出し時には「.」「->」演算子からの呼び出しは禁止にしているんですが、ぬるぽからの呼び出しで落ちないのには最初ビックリしましたよ。