Я не понимаю, какие могут быть проблемы, если конструктор был унаследован от базового класса. Cpp Primer Plus говорит,
Конструкторы отличаются от других методов класса тем, что они создают новые объекты, тогда как другие методы вызываются существующими объектами . Это одна из причин, почему конструкторы не наследуются . Наследование означает, что производный объект может использовать метод базового класса, но, в случае конструкторов, объект не существует до тех пор, пока конструктор не выполнит свою работу.
Я понимаю, что конструктор вызывается до завершения строительства объекта.
Как это может привести к проблемам, если дочерний класс наследует (под наследованием я подразумеваю, что дочерний класс может переопределять метод родительского класса и т. Д. Не просто получая доступ к методу родительского класса ) родительский конструктор?
Я понимаю, что нет необходимости явно вызывать конструктор из кода [не то, что я знаю пока.] Кроме как при создании объектов. Даже тогда вы можете сделать это, используя некоторый механизм для вызова родительского конструктора [В cpp, using ::
или using member initialiser list
, В java using super
]. В Java есть обязательство вызывать его в 1-й строке, я понимаю, что сначала нужно создать родительский объект, а затем продолжить конструирование дочернего объекта.
Это может переопределить это. Но я не могу придумать ситуации, когда это может создать проблему. Если ребенок наследует родительский конструктор, что может пойти не так?
Так что это просто, чтобы избежать наследования ненужных функций. Или есть что-то еще?