Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 08.09.2015, 16:33   #1
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию Вызов конструктора производного класса для экземпляра базового класса

Ребят, в общем я тут словил небольшой ступор. Кто-нибудь может доходчиво, обычным русским языком, объяснить, зачем для экземпляра базового класса вызывается конструктор производного класса???
У меня есть только одна идея. Допустим, что код базового класса недоступен, а нам необходимо дописать еще один конструктор. Тогда мы его можем запихнуть в производный класс, и вызывать тогда его оттуда.
Но как я понимаю, это явно не то, для чего это делается.
max_prorok вне форума Ответить с цитированием
Старый 08.09.2015, 16:43   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Можете пример привести, а то пока есть несколько вариантов о чем вы говорите...
p51x вне форума Ответить с цитированием
Старый 08.09.2015, 17:28   #3
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

Customer - базовый класс;
Nevermore60Customer - производный класс.
Код:
Customer Cust1;
Cust1 = new Nevermore60Customer();
Вот собственно пример.
Эта часть из кода, который показывает сокрытие метода. Сокрытие метода я понял, а вот именно эту часть я не пойму.

Последний раз редактировалось max_prorok; 08.09.2015 в 17:30.
max_prorok вне форума Ответить с цитированием
Старый 08.09.2015, 20:12   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Вы там звездочку не пропустили?..

Здесь смотрите какая ситуация: допустим есть базовый класс Т и его производные Т1, Т2. Естественно в Т1, Т2 есть включенный Т и мы имеем право так писать и использовать с некоторыми ограничениями + переопределенные функции сначала будут искаться в соответствующих производных классах.
В основном это применяется в двух случаях:
1. Нужно в одну коллекцию запихать и Т1, и Т2 - например, в один массив.
2. Когда объекты будут создаваться по очереди... для економии переменной.
p51x вне форума Ответить с цитированием
Старый 08.09.2015, 20:25   #5
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

кратко: чтоб меньше думать
была иерархия А-В, добавил Х и получилось А-Х-В.... что будет с кодом? Придётся всюду добавлять вызов конструктора Х, ещё и следить за последовательностью вызовов
Если же мы в методе/конструкторе вызываем этот же метод предка (ещё и не явно указывая класс предка, а его псевдоним), то вся эта цепочка вызовов выстраивается автоматически и нам, в общем-то, не нужно помнить кучу лишней информации
Группа ВК - https://vk.com/gw_inc
Почта - forwork.anton@gmail.com
GreenWizard вне форума Ответить с цитированием
Старый 09.09.2015, 09:39   #6
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

Всем спасибо, правда второй пример я не до конца разобрал. А первый понял, плюс мне привели явный пример с фигурами. Т.е. есть базовый класс - фигура, и производные круг и квадрат. И если мне нужен массив кругов и квадратов, я создаю массив экземпляров класса фигура, и потом для каждого члена вызываю свой конструктор, для кругов - конструктор кругов, а для квадратов - конструктор квадратов.
max_prorok вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызов конструктора одного класса внутри конструктора другого tolikprankster Помощь студентам 1 04.08.2014 11:42
Функция базового класса вызывает критическую ошибку при вызове для класса-потомка Archet Общие вопросы C/C++ 7 17.01.2012 19:17
Ошибка при присвоении объекту производного класса объекта базового класса с исп. явного приведения типов Lanx Помощь студентам 0 06.04.2011 19:24
Повторный вызов конструктора класса EUGY Общие вопросы C/C++ 13 28.09.2010 15:00
Параметр конструктора класса = объект этого класса nazavrik Общие вопросы C/C++ 6 14.02.2010 13:48


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840