在对象上使用push_back,C++
我不明白关于push_back的一些信息。
当我在对象上使用push_back时,是否使用对象的
复制构造函数复制其所有元素? (如果对象没有什么拷贝构造函数?)
在对象上使用push_back,C++
另一个问题:
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
中删除。
我认为说'删除c'会删除被推入'vector'的对象是令人困惑的。 'Course'对象从未被推入'vector'中 - 唯一的东西就是指针。 –
'delete c'将删除'c'指向的对象('Course')。 ''c'被推入'vector',我不明白你对'Course'被推向矢量的评论......这是一个'vector
这正是我所说的。你说“它确实会删除你在'vector'中推送的对象。” –
是的。当你尝试访问那个指针时,你可以猜测...... – Mysticial