Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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,695
По умолчанию

Можете пример привести, а то пока есть несколько вариантов о чем вы говорите...
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,695
По умолчанию

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызов конструктора одного класса внутри конструктора другого 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