Вызывает ли деструктор явное уничтожение объекта полностью? - PullRequest
14 голосов
/ 24 июня 2009

Если я вызываю деструктор явным образом (myObject. ~ Object ()), гарантирует ли это, что объект будет надлежащим образом уничтожен (вызывая все дочерние деструкторы)?

Хорошо, некоторый код:

class Object
{
   virtual ~Object()
   {}
};

class Widget : public Object
{
   virtual ~Widget()
   {}
};

...
Object* aWidget = new Widget(); //allocate and construct
aWidget->~Object(); //destroy and DON'T deallocate

Я знаю, что могу просто удалить объект, но я не хочу. Я хочу сохранить выделенную память под рукой в ​​качестве важной оптимизации.

Спасибо!

Ответы [ 11 ]

0 голосов
/ 24 июня 2009

Зачем его вообще уничтожать? Просто перезаписать память? Вы хотите, чтобы логика выполнялась для изящной обработки высвобождающих ресурсов? Я решительно скажу, что это злоупотребление языком, а не хорошая идея.

...