вектор — использование push_back для объектов, переполнение стека

Я не понимаю что-то о push_back.
Когда я использую push_back для объекта, копирует ли он все свои элементы, используя объект
копировать конструктор? (что если объект не имеет конструктора копирования?)

Другой вопрос:

vector<Course*> cs;
Course* c = new CScourse(); //CScourse inherits Course
cs.push_back(c);

если я использую

delete c;

Будет ли это удалить то, что я только что вставил в вектор?

0

Решение

Да, каждый объект копируется в vector, Если vector должен расти, каждый элемент будет скопирован на новое место. В вашем случае вы храните указатели на Course поэтому копируются только указатели, фактические объекты остаются неизменными.

если ты delete c;, он действительно удалит объект, на который указывает c что ты толкнул в свой vector, vector будет по-прежнему содержать указатель на объект, который был c хотя, это считается висящим указателем. Вы обычно удаляете это из своего vector перед удалением.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector