Нет смысла иметь конструктор, который только инициализирует все элементы данных с копиями параметров в вашем примере.Также получатели бесполезны, когда члены данных являются публичными.Единственное, что было бы интересно сделать ваше заявление
ptr, удаляется после отката, когда это не должно быть.
наблюдаемый, деструктор, который говорит ообъект разрушается, отсутствует в вашем примере.Код с тем же эффектом:
#include <vector>
#include <iostream>
struct Point
{
int x, y;
~Point() { std::cout << "Point dtor called for " << this << '\n'; }
};
int main()
{
Point *ptr = new Point{ 5, 10 };
std::cout << "ptr points to " << ptr << '\n';
std::vector<Point>allpts;
allpts.push_back(*ptr);
// delete ptr;
}
Пример вывода (без delete ptr;
):
ptr points to 0018DE58
Point dtor called for 0018DBF0
Пример вывода (с delete ptr;
):
ptr points to 0018DE58
Point dtor called for 0018DBF0
Point dtor called for 0018DE58
Как видите, объект, на который указывает ptr
, не удаляется, если это не сделано явно.