Когда вы создаете экземпляр производного класса, вы всегда должны вызывать базовый конструктор, и нет пути его обойти. Однако, если базовый класс имеет конструктор без параметров, вам не нужно указывать вызов базового конструктора, если вы его опустите, он неявно вызовет конструктор без параметров. Если базовый класс не имеет конструктора без параметров (как в вашем примере), вы должны указать, какой базовый конструктор вызывать и какие параметры отправлять ему.
Когда вы создаете экземпляр класса B
, вы вроде создаете экземпляр класса A
, потому что B
экземпляр равен an A
экземпляр. Конструктор в базовом классе должен быть вызван для инициализации любых членов, которые вы можете унаследовать. Сначала объект инициализируется как экземпляр A
, а затем как экземпляр B
.