|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|||||||||||
Ромбовидное наследование. Конструктор внука.13.04.2012, 16:41. Показов 5442. Ответов 11
Метки нет (Все метки)
если хотите, можете почитать код - он довольно объёмный...но однотипный
теперь более конктретно:
я думаю так: при такой записи сначало вызовется конструктор по умолчанию предка chipsetH(который в свою очередь вызовет конструктор по умолчанию для "дедушки" chipset), потом конструктор по умолчанию для chipsetP (который тоже вызовет дедушку по умолчанию), потом вызовется конструктор дедушки с параметрами ЮЗБ2 и ЮЗБ3. итого: получили вызов конструктора дедушки 3 раза? выход виже в следующем: добавить в протектед секции папы и мамы (H и P) спец конструкторы, которые соответствуют уникальным полям. Но тогда возникают ещё вопросы...ведь я же не смогу вызвать конструкторы папы и мамы (в протектет секциях папы и мамы), не вызвав конструктор деда? Он же по умолчанию вызовется... надеюсь, мои слова поймёте...пытался как можно более подробно расписать ![]() спасибо
0
|
|||||||||||
| 13.04.2012, 16:41 | |
|
Ответы с готовыми решениями:
11
Ромбовидное наследование. Деструкторы. Про ромбовидное наследование |
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
| 13.04.2012, 21:47 | |
|
Допустим, есть класс Base, Derived1: public virtual Base, Derived2: public virtual Base и наконец Final: public virtual Derived1, public virtual Derived2
При вызове конструктора Final он вызывает конструктор Derived1, вызывающий конструктор Base. Затем вызывается конструктор Derived2, который в данном случае не вызывает конструктор Base, поскольку этот подобъект считается уже сконструированным.
0
|
|
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
||||||||||||||||||||||||||
| 13.04.2012, 23:51 [ТС] | ||||||||||||||||||||||||||
|
Хм...хорошо...но, как я понял, это касается только конструкторов по умолчанию
то есть так: при вызове любого конструктора Final, вызывается конструктор по умолчанию для Derived1 и Derived2, если не написано обратного, к тому же вызывается конструктор по умолчанию для Base - один раз. но дело в том, что вызов у меня - это
К тому же, я планирую написать что-то типо такого
и как тогда добиться, чтобы строка примерного вида
0
|
||||||||||||||||||||||||||
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
| 14.04.2012, 10:16 | |
|
Это относится к вызовам любого конструктора второго и последующих родителей, в том числе и к тем, что явно вызывают конструктор "дедушки". Эти вызовы игнорируются, потому что "дедушка" считается уже сконструированным.
0
|
|
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|
| 14.04.2012, 12:14 [ТС] | |
|
Спасибо
0
|
|
| 14.04.2012, 13:40 | |
|
Не по теме: А чем бывает вызвано ромбовидное наследование? Каковы преимущества и недостатки? Каковы альтернативы?
0
|
|
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
||
| 14.04.2012, 15:00 | ||
|
Альтернативы в порядке предпочтительности: а) композиция, необходимые классы включаются в результирующий в качестве членов б) микс-ины: класс наследует от узкоспециализированных "примесей", добавляющих узкое подмножество свойств в) обычное множественное наследование от классов, не имеющих общих предков
0
|
||
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|
| 14.04.2012, 17:07 [ТС] | |
|
Самый обычный пример, который всем всегда приводят -это:
есть ПЕРСОНА СТУДЕНТ и ПРЕПОДОВАТЕЛЬ - наследники а их общий предок АСПИРАНТ вбирает в себя всё лучшее - то есть их общий потомок. вот и ромбовидное наследование
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 14.04.2012, 17:16 | ||
|
0
|
||
|
9 / 9 / 9
Регистрация: 19.09.2011
Сообщений: 272
|
|
| 14.04.2012, 17:20 [ТС] | |
|
ну видно же, что очепятка...
прочтите внимательно строчку "их общий предок АСПИРАНТ вбирает в себя всё лучшее - то есть их общий потомок." Самый обычный пример, который всем всегда приводят -это: есть ПЕРСОНА СТУДЕНТ и ПРЕПОДОВАТЕЛЬ - наследники а их общий наследник АСПИРАНТ вбирает в себя всё лучшее - то есть их общий потомок. вот и ромбовидное наследование
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 14.04.2012, 20:25 | |
|
Аспирант чаще всего не является студентом, а студент - аспирантом. Сами возможности аспиранту не быть студентом, а студенту - не быть аспирантом вместе исключает отношение наследования между этими классами, так как всякий экземпляр потомка одновременно должен быть экземпляром всех его предков. Студент чаще всего не преподаёт, то есть не является преподавателем, а преподаватель чаще всего не является студентом. Опять наследование исключено. Аспирант - общий потомок преподавателя и обучающегося. Но студент не является ни предком, ни потомком ни одного из них. Именно это критерий различия между наследованием и случайной общностью атрибутов/методов: если всякий экземпляр одного класса одновременно является экземпляром другого, то наследование имеет место. Но стоит ли учитывать все отношения в модели? И почему? Какие есть преимущества и недостатки?
0
|
|
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
||||||||
| 15.04.2012, 09:37 | ||||||||
0
|
||||||||
| 15.04.2012, 09:37 | |
|
Помогаю со студенческими работами здесь
12
Ромбовидное наследование и перегрузка виртуальных функций Ромбовидное наследование и ключевое слово virtual Наследование и конструктор. Наследование, конструктор класса Наследование, перегрузка, конструктор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|