размещение нового и явного вызова освобождения просто вызовет конструктор и деструктор в ссылочных областях, так что выделение памяти эффективно исключается из жизненного цикла объекта
т ответРайан напрямую вызывает виртуальный деструктор. Я протестировал код в VS2010, и он правильно вызывает все деструкторы (проверено с помощью операторов логирования). Это действительно так? В чем проблемы, недостатки или даже плюсы такого подхода?Я могу думать только об этом как о способе действительно сбросить фактический тип, даже если они не переопределяют виртуальный
функции, так как они по крайней мере должны очистить свои деструкторы.reset
Кроме того, какие именно побочные эффекты дает вызов деструктору? Является ли неопределенным поведение использовать объект после такого вызова деструктора? Что делать, если немедленно переинициализировать его
вызов?new (this) MyClass();
Для прямого вызова деструктора применяются те же правила, что и для использования delete.