Существует ли какой-либо автоматизированный способ реализации вызовов виртуальных методов после конструктора и перед деструктором?

Из-за известных проблем с вызовом виртуальных методов из конструкторов и деструкторов, я обычно получаю классы, которым нужен метод final-setup для вызова сразу после их конструктора, и метод pre-teardown, вызываемый непосредственно перед деструктор, вот так:

MyObject * obj = new MyObject;
obj->Initialize();   // virtual method call, required after ctor for (obj) to run properly
[...]
obj->AboutToDelete();  // virtual method call, required before dtor for (obj) to clean up properly
delete obj;

Это работает, но несет с собой риск того, что вызывающая сторона забудет вызвать один или оба этих метода в подходящее время.

Таким образом, вопрос заключается в следующем: есть ли в C ++ способ заставить эти методы вызываться автоматически, поэтому вызывающая программа не должна помнить, чтобы вызывать их? (Я предполагаю, что это не так, но я подумал, что все равно буду спрашивать на всякий случай, если есть какой-нибудь умный способ сделать это)

Ответы на вопрос(9)

Ваш ответ на вопрос