C ++ требует, чтобы его обычное создание имело размер как минимум 1 (может быть больше, хотя я не знаю компилятора, который это делает).Однако он допускает «пустую оптимизацию базового класса», поэтому, хотя класс имеет минимальный размер 1, когда он используется в качестве базового класса, он не должен добавлять что-либо к размерупроизводный класс.
Я бы думаю Java, вероятно, делает то же самое.Причина, по которой C ++ требует размер как минимум 1, заключается в том, что каждый объект должен быть уникальным.Рассмотрим, например, массив объектов с нулевым размером.Все объекты будут находиться по одному адресу, поэтому у вас будет только один объект.Принятие нуля звучит как рецепт проблем ...