Есть такой класс:
class point
{
public:
int x, y;
point(int x, int y)
{
this -> x = x;
this -> y = y;
}
void show()
{
printf("(%d, %d)", x, y);
}
void kill()
{
delete this;
}
~point()
{
printf("destruct");
}
};
Я поместил во внутрь функцию kill, которая должна удалить объект класса, сославшись на него через this.
point a(5, 7);
a.kill(); //удаляем объект, получаем в консоль "destruct"
a.show(); //значения (5, 7) выводятся в консоль
Она работает и выводит в консоль "destruct". Но после этого объект никуда не исчезает. К нему по прежнему можно обратиться и вывести значения xy. При этом по завершению работы программы, в консоль выводится "destruct" второй раз. То есть объект действительно где-то висит и затем удаляется повторно. Почему так происходит и как правильно уничтожить объект?