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 ответов

7 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
Легче писать на C++ чем на C, если полностью не изучать C++, а знать только основное?
Алмаз
8
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Карта сайта