Home > C++ > スタティックの継承

スタティックの継承

  • 2007-10-23 (火) 23:13
  • C++

前のエントリ「忘れないうちにスタティックイニシャライザー」がひどい感じにおかしかったので修正しました。
#includeが>とか使ってなかったから消えてた。あと単純な間違いもあった。
そのついでに、「継承したらどうなるんだろう。」ってのをやってみました。

TestClass.h


template<typename T>
class TestClass {
    static int a;
};
template<typename T>
int TestClass<T>::a = 0;

TestA.h


class TestA : public TestClass<int> {
};

TestB.h


class TestB : public TestClass<int> {
}; 

main.cpp


int main(void) {
   TestA::a = 111;
   TestB::a = 222;

   printf("%d", TestA::a);

   return 0;
}

結果


222

というわけで、しっかりスタティックでした。
もしTestClassのaが翻訳単位だとしたら(?)、TestA::aとTestB::aが違う実体をさしてしまうんじゃないかという杞憂。
だいじょうぶ、どっちも唯一の実体TestClass::aを見てました。

以上

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=117
Listed below are links to weblogs that reference
スタティックの継承 from コスミー報告書[社外秘]

Home > C++ > スタティックの継承

Search
Feeds
Meta
 合計:004582
 今日:0120 昨日:0095

Return to page top