親クラスのstaticな変数の扱い

1:0th track@mixi:2009/05/04(月) 09:01:00
C++でスタティックなメンバ変数だったり、
スタティックなローカル変数を持つメソッドを
持つクラスを継承した場合は・・・

========================================
サンプルソース
----------------------------------------
class CParent
{
public:
  static int m_nNum;

  int Show()
  {
    static int i;
    return ++i;
  }
};

int CParent::m_nNum = 0;

class CChild : public CParent
{
};

int main()
{
  CParent parent;
  CChild child;

  printf("%d\n", ++CParent::m_nNum);
  printf("%d\n", ++CChild::m_nNum);

  printf("%d\n", parent.Show());
  printf("%d\n", child.Show());
}
========================================
結果
----------------------------------------
1
2
1
2
========================================

継承した先でも同じ変数を参照することになる。
もちろん継承した先でオーバーライドすれば
別の変数を参照することになる。

<ついに手を出してしまった・・・ | 5月の記事一覧 | ごちそうさまー>
<<前の5件 | ぜろろん雑記(開発中)TOP | 次の5件>>


コメントはまだありません。

このブログシステムはまだ開発中です。
コメントフォームが表示されていても書き込むことはできません。

ナビゲーション


\アリだー!/