私はこの質問を読みました: C++ Virtual class inheritance object size issue、なぜ仮想継承がクラスに追加の vtable ポインターをもたらすのか疑問に思っていました。
ここで記事を見つけました: https://en.wikipedia.org/wiki/Virtual_inheritance
これは次のことを示しています。
ただし、このオフセットは通常、実行時にしかわかりません...
ここでランタイムに関連するものはわかりません。完全なクラス継承階層は、コンパイル時にすでにわかっています。仮想関数と基本ポインターの使用法は理解していますが、仮想継承にはそのようなものはありません。
一部のコンパイラ (Clang/GCC) が vtable を使用して仮想継承を実装する理由と、これが実行時にどのように使用されるかを誰かが説明できますか?
ところで、私はこの質問も見ました: vtable in case of virtual inheritanceですが、それは仮想関数に関連する回答のみを指しています。これは私の質問ではありません。