170 похожих чатов

Припустим есть класс Animal, от него наследуются классы Human, Dog,

Cat.

В глобальном скопе где-то над main() определю без инициализации Animal current_animal;. Внутри мейна в цикле получаем данные из сторонних источников и в зависимости от этих данных меняем current_animal:

Animal current_animal;

int main(){
while(true){
x = get_data();
if (x == 1){
current_animal = Human(...);
} else if {
current_animal = Dog(...);
}
}
}

То будет ли такое работать? Как правильно чистить память (или она сама будет чистится)?

12 ответов

12 просмотров

Ну, по порядку Во первых глоабльную память чистить не надо, она очистится при завершении программы Во вторых, при таком синтаксисе у тебя произойдёт срезка характеристик, относящихся к классам-наследникам и разницы между инициализациями не будет

Пользователь-610f3 Автор вопроса
Anton Kviatkovskii
Ну, по порядку Во первых глоабльную память чистить...

1. Ну я про то, что во время цикла очень много раз может быть создан новый экземпляр одного из трёх классов, а каждую итерацию эту память бы чистить если был изменён экземпляр одного типа на другой. 2. Вот это засада конечно, я думал что сохранится(

Пользователь-610f3 Автор вопроса
Пользователь 610f3
1. Ну я про то, что во время цикла очень много раз...

Если у тебя три класса то создай заранее эти три экземпляра и в ифах просто цепляйся указателем на них

Aleksei Budyakov
Если у тебя три класса то создай заранее эти три э...

Я так понимаю, что там аргументы к-торов разные

Пользователь-610f3 Автор вопроса
Пользователь-610f3 Автор вопроса
Anton Kviatkovskii
current_animal = Human(...); ... зависит от ввода?

От ввода, времени, того что в x пришло, от состояния программы вообще

Aleksei Budyakov
Если у тебя три класса то создай заранее эти три э...

Но вообще подход так себе ибо расширяемость плохая. Надо подумать как лучше

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта