|
0 / 0 / 0
Регистрация: 11.03.2024
Сообщений: 6
|
||||||||||||||||
Как заменить родителя на наследника?20.03.2024, 13:17. Показов 1754. Ответов 22
Здравствуйте, возможно ли как-то заменить родительский класс на его наследника?
У меня есть два класса:
0
|
||||||||||||||||
| 20.03.2024, 13:17 | |
|
Ответы с готовыми решениями:
22
Как избежать повтора параметров конструктора класса-родителя в конструкторе наследника?
Нужно из класса наследника передать параметры в класс родителя |
|
фрилансер
6472 / 5691 / 1131
Регистрация: 11.10.2019
Сообщений: 15,168
|
|||||||
| 20.03.2024, 13:28 | |||||||
хотя, тут, видимо, речь про динамический полиморфизм
0
|
|||||||
|
0 / 0 / 0
Регистрация: 11.03.2024
Сообщений: 6
|
|
| 20.03.2024, 13:45 [ТС] | |
|
Как таким образом заменить элемент массива класса Tile на объект класса Wall?
0
|
|
|
фрилансер
6472 / 5691 / 1131
Регистрация: 11.10.2019
Сообщений: 15,168
|
||||||
| 20.03.2024, 14:05 | ||||||
|
daniiila, так подойдёт?
2
|
||||||
|
0 / 0 / 0
Регистрация: 11.03.2024
Сообщений: 6
|
|
| 20.03.2024, 14:41 [ТС] | |
|
Можете объяснить работу unique_ptr и make_unique?
Будет ли работать этот способ с моей перегрузкой операторов?
0
|
|
|
фрилансер
6472 / 5691 / 1131
Регистрация: 11.10.2019
Сообщений: 15,168
|
||
| 20.03.2024, 15:29 | ||
|
daniiila,
std::unique_ptr - умный указатель (сам умеет вызывать delete для хранимого указателя)
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 20.03.2024, 15:45 | ||
|
Добавлено через 51 секунду Да и я нигде не вижу friend
0
|
||
|
фрилансер
6472 / 5691 / 1131
Регистрация: 11.10.2019
Сообщений: 15,168
|
|
| 20.03.2024, 16:11 | |
|
SmallEvil, у меня её и нет
0
|
|
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
|
| 20.03.2024, 17:35 | |
|
1
|
|
|
фрилансер
6472 / 5691 / 1131
Регистрация: 11.10.2019
Сообщений: 15,168
|
|
| 20.03.2024, 18:18 | |
|
eva2326, да, забыл виртуальный деструктор
0
|
|
|
"C with Classes"
|
|||
| 20.03.2024, 18:38 | |||
|
Добавлено через 5 минут
0
|
|||
|
фрилансер
6472 / 5691 / 1131
Регистрация: 11.10.2019
Сообщений: 15,168
|
||
| 20.03.2024, 18:40 | ||
|
_stanislav, да, он тут не используется, но это всё равно считается UB, насколько я знаю
)
1
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 20.03.2024, 18:41 | |
|
0
|
|
|
фрилансер
6472 / 5691 / 1131
Регистрация: 11.10.2019
Сообщений: 15,168
|
|
| 20.03.2024, 18:46 | |
|
_stanislav, вот, даже в доке пример есть
0
|
|
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
|||
| 20.03.2024, 21:15 | |||
|
https://en.cppreference.com/w/... ake_unique https://en.cppreference.com/w/... unique_ptr https://en.cppreference.com/w/... ult_delete https://eel.is/c++draft/expr.delete#3
1
|
|||
|
Вездепух
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,294
|
|||
| 21.03.2024, 01:48 | |||
Tile могут быть только Tile. Ничего заменить нельзя.t имеет тип Tile. Никакого другого типа этот объект никогда иметь не будет.
0
|
|||
|
"C with Classes"
|
||
| 21.03.2024, 17:40 | ||
|
eva2326, не нашел, где написано что де
In a single-object delete expression, if the static type of the object to be deleted is not similar ([conv.qual]) to its dynamic type and the selected deallocation function (see below) is not a destroying operator delete, the static type shall be a base class of the dynamic type of the object to be deleted and the static type shall have a virtual destructor or the behavior is undefined. In an array delete expression, if the dynamic type of the object to be deleted is not similar to its static type, the behavior is undefined. однако интересно почему отсутствие деструктора в базовом классе UB, вроде как должен вызваться деструктор статического типа напрямую, минуя таблицу виртуальных функций, нужно наверно исходники реализации посмотреть что бы понять где там возможно UB? лень конечно.
0
|
||
|
Вездепух
13202 / 6837 / 1822
Регистрация: 18.10.2014
Сообщений: 17,294
|
|||||||||
| 21.03.2024, 18:12 | |||||||||
|
Однако стоит заметить, что в реальных реализациях на виртуальности деструктора держится не только вызов правильного деструктора как такового, но и вызов правильного operator delete с правильными аргументами. Стандарт писался с "подразумеванием" такого реализационного подхода
1
|
|||||||||
| 21.03.2024, 18:19 | |
|
0
|
|
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
||||||||||
| 21.03.2024, 18:52 | ||||||||||
|
Но вам все равно не понятно, зачем в такой ситуации нужен вирт. деструктор? Что бы не было UB, Карл!!!
То стандарт накладывает дополнительное требование: что бы был вирт. деструктор. Благодаря вирт. деструктору, компилятор может вычислить динамический тип удаляемого объекта. Он использует это, например, для поддержки пользовательских операторов delete. А так же, для того, что бы можно было запустить правильный деструктор наследника.
1
|
||||||||||
| 21.03.2024, 18:52 | |
|
Помогаю со студенческими работами здесь
20
Правда, что указатель класса-наследника не может указывать на объект класса-родителя?
Вызывается метод родителя, а не наследника. (Проблема с наследованием в параметрах метода) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 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
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|