例として、次のスニペットを取り上げます。
struct Foo
{
typedef int type;
};
class Bar : private Foo
{
};
class Baz
{
};
ご覧のとおり、この関係には仮想関数は存在しません。これが事実であるため、言語に関する限り、次の仮定は正確ですか?
- では仮想関数テーブルは作成されません
Bar
。 sizeof(Bar) == sizeof(Baz)
基本的に、私はこれを行うことに対して何らかのペナルティを支払うかどうかを理解しようとしています. 私の最初のテスト (単一のコンパイラーではありますが) では、私のアサーションが有効であることが示されていますが、これが私のコンパイラーのオプティマイザーなのか、それとも言語仕様なのかはわかりません。