|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|||||||||||
Порядок вызова конструкторов16.03.2013, 05:43. Показов 11921. Ответов 6
Метки нет (Все метки)
на срр-reference нашёл тему про виртуальный деструктор, но я так и не понял (да там и не объясняется), почему именно конструктор класса Object вызывается вторым по счёту после вызова конструктора базового класса? Ведь он же по идее находится внутри класса Derived, следовательно сначала должен вызваться конструктор Derived и после инициализации объекта своим конструктором уже создать объект класса Object и вызвать его конструктор. Но всё происходит иначе:
0
|
|||||||||||
| 16.03.2013, 05:43 | |
|
Ответы с готовыми решениями:
6
Порядок вызова конструкторов/деструкторов |
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
| 16.03.2013, 09:38 | |
|
происходит всё правильно - создавая объект деривед, вызывается конструктор деривед который тут же передаёт управление конструктору родительского класса, затем вызываются конструкторы полей класса деривед, а затем отрабатывает собственно конструктор деривед
1
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 21.03.2013, 07:11 | |
|
xtorne21st, Кудаив всё верно сказал, я лишь добавлю, почему так происходит: поскольку класс Derived расширяет класс Base, все поля класса Base существуют и в Derived. Штука в том, что для конструирования полей объекта класса Derived, отсутствующих в Base (добавленных только в Derived), могут потребоваться поля класса Derived, унаследованные из Base. Таким образом, к началу конструирования полей класса Derived вся часть этого класса, унаследованная из Base, должна быть уже сконструирована. Для этого и вызывается конструктор класса Base, причём вызывается до того, как начнут конструироваться поля из Derived. Вообще, порядок вызова конструкторов - важная составляющая объектно-ориентированной части языка, поэтому советую вам подробно разобраться с ней.
1
|
|
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
| 21.03.2013, 12:54 [ТС] | |
|
silent_1991, Мне иногда кажется, что они как-то вызываются рекурсивно... Ну типа вызывается объект класса Derived, соответственно вызывается конструктор Derived, но он сразу не возвращает значение (да и вообще не выполняет каких либо действий), а передает управление по иерархии классов вниз, и так происходит пока не нащупает "дно", а затем начинается возврат значений.
0
|
|
|
Неэпический
|
|||||||
| 21.03.2013, 13:13 | |||||||
|
При создании потомка как-то так:
1
|
|||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 21.03.2013, 13:31 | ||
|
1
|
||
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
| 21.03.2013, 18:55 [ТС] | |
|
Спасибо за детальное разъяснение
0
|
|
| 21.03.2013, 18:55 | |
|
Помогаю со студенческими работами здесь
7
Классы, наследование, порядок вызова конструкторов Порядок вызова конструкторов при множественном наследовании Порядок вызова конструкторов при присваивании объектов одного класса
Очерёдность вызова конструкторов класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|