Да. Как и во всех ответах, если вы на 100% уверены, что данные класса не будут использованы после вызова delete this
.
Например, в одном проекте:
void Test()
MyClass * Someclass = new MyClass;
SomeClass->DoYourThing();
SomeClass->KillYourself();
return;
void MyClass::DoYourThing() { return; }
void MyClass::KillYourself() {delete this;}
Очень упрощенное объяснение, проект использовал delete this;
как часть управления памятью для объектов этого типа; их конструктор добавил их в закрытый список используемых классов этого типа и удалил себя из этого списка, когда они были уничтожены, а затем удалили себя (это не было в деструкторе). Любые объекты этого класса, которые не удалили себя, когда программа достигла своей конечной точки, получили эквивалент KillYourself()
из статической функции-члена CleanYourselves()