Мене бентежить, які проблеми можуть бути, якби конструктор успадкував базовий клас. Cpp Primer Plus каже:
Конструктори відрізняються від інших класових методів тим, що вони створюють нові об'єкти, тоді як інші методи викликаються існуючими об'єктами . Це одна з причин, що конструктори не успадковуються . Успадкування означає, що похідний об'єкт може використовувати метод базового класу, але, у випадку конструкторів, об'єкт існує доти, доки конструктор не виконає свою роботу.
Я розумію, конструктор викликається до завершення будівництва об'єкта.
Як це може призвести до проблем, якщо дочірній клас успадковує ( успадковуючи, я маю на увазі, що дочірній клас здатний змінити метод батьківського класу тощо. Не просто звертаючись до методу батьківського класу ) батьківський конструктор?
Я розумію, що немає необхідності чітко викликати конструктор з коду (не про що мені відомо), за винятком створення об'єктів. Вже тоді ви можете це зробити, використовуючи якийсь механізм викликати батьківський конвектор [In cpp, using ::
or using member initialiser list
, In java using super
]. У Java є примусовий виклик, щоб викликати його в 1-му рядку, я розумію, що це спочатку створити батьківський об'єкт, а потім триває побудова дочірнього об'єкта.
Це може її перекрити . Але я не можу придумати ситуації, коли це може створити проблему. Якщо дитина наслідує батьківський конструктор, що може піти не так?
Так це просто утриматися від успадкування непотрібних функцій. Або є більше до цього?