В то время как большинство ответов повторно инициализируют объект в два этапа; во-первых, создание исходного объекта, а затем создание другого объекта и замена его на первый с использованием placement new
. Этот ответ охватывает случай, когда вы сначала создаете указатель на пустой объект, а затем выделяете и конструируете его:
class c *c_instance; // Pointer to class c
c_instance = new c(arg1, ..., argn) // Allocate memory & call the proper constructor
// Use the instance e.g. c->data
delete c_instance; // Deallocate memory & call the destructor