|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.09.2015, 16:33 | #1 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Вызов конструктора производного класса для экземпляра базового класса
Ребят, в общем я тут словил небольшой ступор. Кто-нибудь может доходчиво, обычным русским языком, объяснить, зачем для экземпляра базового класса вызывается конструктор производного класса???
У меня есть только одна идея. Допустим, что код базового класса недоступен, а нам необходимо дописать еще один конструктор. Тогда мы его можем запихнуть в производный класс, и вызывать тогда его оттуда. Но как я понимаю, это явно не то, для чего это делается. |
08.09.2015, 16:43 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Можете пример привести, а то пока есть несколько вариантов о чем вы говорите...
|
08.09.2015, 17:28 | #3 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Customer - базовый класс;
Nevermore60Customer - производный класс. Код:
Эта часть из кода, который показывает сокрытие метода. Сокрытие метода я понял, а вот именно эту часть я не пойму. Последний раз редактировалось max_prorok; 08.09.2015 в 17:30. |
08.09.2015, 20:12 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Вы там звездочку не пропустили?..
Здесь смотрите какая ситуация: допустим есть базовый класс Т и его производные Т1, Т2. Естественно в Т1, Т2 есть включенный Т и мы имеем право так писать и использовать с некоторыми ограничениями + переопределенные функции сначала будут искаться в соответствующих производных классах. В основном это применяется в двух случаях: 1. Нужно в одну коллекцию запихать и Т1, и Т2 - например, в один массив. 2. Когда объекты будут создаваться по очереди... для економии переменной. |
08.09.2015, 20:25 | #5 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
кратко: чтоб меньше думать
была иерархия А-В, добавил Х и получилось А-Х-В.... что будет с кодом? Придётся всюду добавлять вызов конструктора Х, ещё и следить за последовательностью вызовов Если же мы в методе/конструкторе вызываем этот же метод предка (ещё и не явно указывая класс предка, а его псевдоним), то вся эта цепочка вызовов выстраивается автоматически и нам, в общем-то, не нужно помнить кучу лишней информации |
09.09.2015, 09:39 | #6 |
Форумчанин
Регистрация: 06.10.2011
Сообщений: 181
|
Всем спасибо, правда второй пример я не до конца разобрал. А первый понял, плюс мне привели явный пример с фигурами. Т.е. есть базовый класс - фигура, и производные круг и квадрат. И если мне нужен массив кругов и квадратов, я создаю массив экземпляров класса фигура, и потом для каждого члена вызываю свой конструктор, для кругов - конструктор кругов, а для квадратов - конструктор квадратов.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вызов конструктора одного класса внутри конструктора другого | tolikprankster | Помощь студентам | 1 | 04.08.2014 12:42 |
Функция базового класса вызывает критическую ошибку при вызове для класса-потомка | Archet | Общие вопросы C/C++ | 7 | 17.01.2012 20:17 |
Ошибка при присвоении объекту производного класса объекта базового класса с исп. явного приведения типов | Lanx | Помощь студентам | 0 | 06.04.2011 20:24 |
Повторный вызов конструктора класса | EUGY | Общие вопросы C/C++ | 13 | 28.09.2010 16:00 |
Параметр конструктора класса = объект этого класса | nazavrik | Общие вопросы C/C++ | 6 | 14.02.2010 13:48 |