что никаких виртуальных методов в стратегиях не должно быть по дизайну. Деструкторы стратегий должны быть protected. В связи с этим возник вопрос к такому примеру:
class test
{
public:
test()
{
std::cout << "test init" << std::endl;
}
void Delete()
{
delete this;
}
protected:
~test()
{
std::cout << "test deleted" << std::endl;
}
};
Если я создаю такой объект, а потом делаю примерно так:
int main()
{
test* t = new test;
t->Delete();
return 0;
}
Будет ли очищена память, которую выделил new ?
https://t.me/xthon/809 извините
А почему память не очистится? 🤔 Должна ведь... (прошу прощения, если иное есмь очевидно, а я не в курсе)
Да.
вообще, про отсутствие виртуальных методов в исполнении Александреску я могу понять и даже разделить, но деструкторы-то чем не угодили?
Обсуждают сегодня