🔍 Что такое empty base optimization?



В C++ любой класс, даже пустой, будет размером не меньше одного байта. Это необходимо, чтобы не было проблем с арифметикой указателей. Однако наследование от пустого класса будет приводить увеличению размера наследника. Но, в C++ предусмотрена empty base optimization, которая позволяет компилятору оптимизировать занимаемую память, так что объект, наследующий пустой базовый класс, не будет занимать дополнительной памяти за счет этого пустого базового класса. Таким образом, размер объекта будет таким же, как если бы он не наследовал пустой класс