C++の怪
ちょっと自分のソースを見ていて思ったこと。
こんな感じで
class A
{
...
int timer;
...
};class A2 : public A
{
...
int timer; // 基底クラスのメンバ変数と
// 同名で宣言。エラーにはならない模様。
...void Test();
};
void A2::Test()
{
// どっちに代入されるのか?
timer = 1;// 出力してみる
printf( "%d / %d\n", ((A*)this)->timer, this->timer );
};
継承クラスの方になぜか継承元と同名のメンバ変数がある場合。
どうなるのかなと。
ちなみに、答え(上記の出力)は
になります。*1
0 / 1
…まぁ、よくよく考えてみると当たり前なんですけれども(汗)
あくまでも「A2のthis」からの「timer」なわけですからね…(苦笑)
*1:共に初期値は0として