0

我对 push_back 不太了解。
当我在对象上使用 push_back 时,它是否使用对象的
复制构造函数复制其所有元素?(如果对象没有复制构造函数怎么办?)

另一个问题:

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

如果我使用

delete c;

它会删除我刚刚推入向量的内容吗?

4

1 回答 1

2

是的,每个对象都被复制到一个vector. 如果vector必须增长,每个元素都将被复制到新位置。在您的情况下,您正在存储指向Course的指针,因此只有指针被复制,实际对象保持不变。

如果是你delete c;,它确实会删除c你在你的vector. vector仍然包含一个指向对象的指针,c这被认为是一个悬空指针。您通常会vector在删除之前将其从您的帐户中删除。

于 2012-11-19T18:36:31.557 回答