Я не понимаю что-то о push_back.
Когда я использую push_back для объекта, копирует ли он все свои элементы, используя объект
копировать конструктор? (что если объект не имеет конструктора копирования?)
Другой вопрос:
vector<Course*> cs;
Course* c = new CScourse(); //CScourse inherits Course
cs.push_back(c);
если я использую
delete c;
Будет ли это удалить то, что я только что вставил в вектор?
Да, каждый объект копируется в vector
, Если vector
должен расти, каждый элемент будет скопирован на новое место. В вашем случае вы храните указатели на Course
поэтому копируются только указатели, фактические объекты остаются неизменными.
если ты delete c;
, он действительно удалит объект, на который указывает c
что ты толкнул в свой vector
, vector
будет по-прежнему содержать указатель на объект, который был c
хотя, это считается висящим указателем. Вы обычно удаляете это из своего vector
перед удалением.
Других решений пока нет …