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;によって指されたオブジェクトを実際に削除します。にはまだオブジェクトへのポインターが含まれていますが、これはダングリング ポインターと見なされます。通常は、削除する前に削除します。cvectorvectorcvector

于 2012-11-19T18:36:31.557 に答える