Мне нравится объявлять переменные в стеке, особенно при использовании стандартного контейнера. Каждый раз, когда вы избегаете new
, вы избегаете потенциальной утечки памяти.
Мне также нравится использовать полиморфизм, то есть иерархии классов с виртуальными функциями. Однако, кажется, что эти функции немного несовместимы: вы не можете сделать:
std::vector<BaseType> vec;
vec.push_back(DerivedType())
или, по крайней мере, кажется, что вы потеряете полиморфную природу объекта, в который вы нажимаете.
Итак, есть ли способ согласовать управление памятью на основе стека и использование виртуальных функций?