いつもの人だけど、一応断っておくけど、俺がスレ立ててるんじゃないよ。
なぜだか知らないが、いつも誰さんが立ててくれる。多分OOPにそれなりに悪意のある人だと思う。
コメントがいつもネガティブだし。

ところで、オブジェクト自身が構造体の先頭にvtableを持つんじゃなくて、
ポインタや参照が自分がさしてるオブジェクトの型を持ってるって案はどう思う?
イメージだと、ポインタは、class pointer_t{ int type; void *addr; };
こんな感じで定義して、ポインタへオブジェクトのポインタを代入したときに、
typeも一緒に書き込むっていう。
結局、ポリモはポインタや参照越しにしか行われないんだから、
ポインタや参照が自分の指してる物の型を知ってればそれで済むと思うんだが。
構造体先頭にvtable持つのって、昔のC言語のノリと相性が悪いし、
C++的にはあんま宜しくないとおもうんだがなぁ。
現状のC++がああいう実装になってるのが未だに謎。
ちなみにshared_ptrは俺の言ってる方の実装になってるんだよね。