.
在这里,我讨论了空基优化,MSalters发表了这个有趣的评论:
任何类都不能有 sizeof(Class)==0,无论是否为空。但是我们专门讨论的是空基类子对象的大小。 它不需要自己的 vtable,也不需要 vtable 指针。假设一个 vtable 指针在偏移量 0 处的通用布局;这将导致零大小的基类子对象与派生类共享其 vtable 指针。没问题:无论如何,它们应该是相同的,这几乎就是虚函数的重点。
我的具体问题是:当我们使用 Empty Class 作为基类时,编译器可能会优化,也可能不会。我们如何确定它实际上做了什么?
一般来说,我们如何知道基类子对象的大小?无论我们是否将其用作基础,基础子对象的大小是否相同?编译器是否仅使用空基类进行优化?
.