У меня есть набор полиморфных объектов, все из моего класса Animal: Cat, Dog и MonkeyFish.
Мой обычный режим работы - хранить эти объекты в векторе указателей на животных, например:
std::vector < Animal * > my_vector;
my_vector.push_back( new Animal_Cat() ); my_vector.push_back( new Animal_Dog() ); my_vector.push_back( new Animal_MonkeyFish() );
И жизнь велика... или это?
Недавно мне сказали, что я действительно должен стараться не выделять память таким образом, потому что это делает управление памятью сложной задачей. Когда мне нужно уничтожить my_vector, я должен выполнить итерацию по всем элементам и удалить все.
Я не думаю, что я могу хранить вектор ссылок (возможно, я ошибаюсь в этом), поэтому мне кажется, что сохранение вектора объектов Animal является моей единственной альтернативой.
Когда я должен использовать вектор указателей против вектора объектов? В общем, какой способ является предпочтительным? (Я хотел бы как можно больше уменьшить копирование объектов.)