|
-1 / 4 / 0
Регистрация: 24.03.2012
Сообщений: 76
|
|||||||||||
Что происходит при наследовании классов?04.03.2017, 16:44. Показов 1692. Ответов 10
Гуглил тут одну тему про наследование и коде встретилась строчка: D d;
Что в ней конкретно происходит ? или как это называется ? Полный код :
A / \ B C \ / D Экземпляр D будет состоять из B, который включает в себя, и С, который также включает в себя A. Таким образом, у вас есть два "экземпляра" (из-за отсутствия лучшего выражения) А. Когда у вас есть такой сценарий, у вас есть возможность неоднозначности. Что происходит, когда вы делаете это:
0
|
|||||||||||
| 04.03.2017, 16:44 | |
|
Ответы с готовыми решениями:
10
Указатели при наследовании классов
|
|
|
||||||
| 04.03.2017, 16:56 | ||||||
|
Происходит неоднозначность. Не понятно от из базовых классов идёт эта функция. Проблема решается виртуальным наследованием
http://www.c-cpp.ru/books/virtualnyy-bazovyy-klass
1
|
||||||
|
-1 / 4 / 0
Регистрация: 24.03.2012
Сообщений: 76
|
|
| 04.03.2017, 17:05 [ТС] | |
|
0
|
|
|
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
|
|
| 04.03.2017, 17:06 | |
|
magistr4815, вызов наследуемого метода
0
|
|
|
-1 / 4 / 0
Регистрация: 24.03.2012
Сообщений: 76
|
||
| 04.03.2017, 17:12 [ТС] | ||
|
0
|
||
|
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
|
|
| 04.03.2017, 17:18 | |
|
magistr4815, посмотрите внимательно, и на свой код и на код Peoples, вы в классы B и C наследуете от класса А, в них будет метод из класса A, и потом во время множественного наследования образуется так называемая ромбовидная структура, и что получается, что у нас в классе D будет 2 метода Foo и происходит неоднозначность, проблема эта решается с помощью виртуального наследования в том случае если метод Foo не был переопределен в классах B и С, ну а дальше создаем объект класса D d(d маленькое это объект) и вызываем наш метож
0
|
|
|
-1 / 4 / 0
Регистрация: 24.03.2012
Сообщений: 76
|
||||||||
| 04.03.2017, 17:37 [ТС] | ||||||||
|
Добавлено через 7 минут Но почему ? Ну тоесть почему у нас после AB идет снова А? тогда по этой логике и после С должна идти А но она не следует. Помогите в этом разобраться ?
0
|
||||||||
|
|
||
| 04.03.2017, 17:52 | ||
|
Внутри конструктора B автоматически вызывается конструктор предка то есть A. Получается AB. При вызове конструктора C автоматически вызывается конструктор предка то есть A. Получается АС. Вызывается собственно D(а в нём автоматически конструкторы предков, то есть A и B, про них было выше). Деструкторы в обратном порядке
Добавлено через 10 минут
0
|
||
|
-1 / 4 / 0
Регистрация: 24.03.2012
Сообщений: 76
|
||
| 04.03.2017, 18:00 [ТС] | ||
|
Получается главный класс не вызывается, он вызывается в наследуемых классах. Что то вроде 1 вызов будет у наследуемого class B : public A где мы получаем "АВ" 2 вызов class C : public A где мы к прошлым буквам добавляем "АС" итог "АВАС" 3 вызов далее происходит магия "неопределенность" (но мы её вроде не разрешаем же) и получаем ещё плюс "D" Верно ?
0
|
||
|
|
|
| 04.03.2017, 18:05 | |
Сообщение было отмечено magistr4815 как решение
Решение
Мы вызываем D. Прежде чем вызывается его конcтруктор, вызывается конструкторы его предков(B и C), а у B и С конструктор иx предка, то есть A
1
|
|
|
-1 / 4 / 0
Регистрация: 24.03.2012
Сообщений: 76
|
|
| 04.03.2017, 18:12 [ТС] | |
|
Спасибо вот теперь ясно все)
0
|
|
| 04.03.2017, 18:12 | |
|
Помогаю со студенческими работами здесь
11
Ошибка Type missmatch при наследовании классов
Ошибка в наследовании классов о связи классов и наследовании даты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|