У меня есть следующий код:Что произошло, когда std :: vector = std :: vector?
struct Position{
int id;
Position(int _id){
id = _id;
qDebug()<<"Position"<<id;
}
~Position(){
qDebug()<<"~Position "<<id;
}
};
qDebug()<<"Init";
std::vector<Position> vec1;
vec1.emplace_back(1);
std::vector<Position> vec2;
vec2.emplace_back(2);
std::vector<Position> vec3;
vec3.emplace_back(3);
qDebug()<<"Move";
vec2 = vec1;
qDebug()<<"---------------------------------";
Что происходит, когда я =? Должен ли быть уничтожен предыдущий объект vec2? Я читал это http://www.cplusplus.com/reference/vector/vector/operator=/, но все еще не undestand, что должно произойти со старым объектом vec2.
Выход:
Init
Position 1
Position 2
Position 3
Move
---------------------------------
~Position 3
~Position 1
~Position 1
Почему позиция 2 не разрушается вообще?
Добавить операторы печати в конструкторе копирования. 'Position (Position const & rhs): id (rhs.id) {std :: cout <<" Copy Construct "<< id <<" \ n ";}' и присвоение 'Position & operator = (Position const & rhs) { std :: cout << "Assign." << id << "заменено на" << rhs.id << "\ n"; id = rhs.id; return * this;} 'и повторить попытку. –