孫継承
C++で。
class A
{
public:
virtual void foo();
};
class B : public A
{
public:
void foo();
};
class C : public B
{
public:
void foo();
};
上記のような感じの継承関係とメソッドの定義で
A* a = new C();
a->foo();
としたとき、a->foo()はどのクラスのものが実行されるのか。
僕はてっきり、class Bでvirtualをつけてないものだから、Bのfoo()が呼び出されると思ってましたよ。
実際はclass Cのfoo()がちゃんと呼び出されるんですな。
いやぁ~恥ずかしす (ノд`*)
いまだにvtableの仕組みがいまいちわからない・・・