コンストラクタを明示的に呼び出すとカタストロフィ。

#include <iostream>

class A {
int* p;
public:
A(int i = 0) : p(new int[i]) { std::cout << "Ctor(" << i << ")\n"; }
~A() { std::cout << std::hex << p << "\n"; delete p; std::cout << "Dtor\n"; }
void Init(int i = 0) { delete p; *this = A(i); std::cout << "Init(" << i << ")\n"; }
};

int main()
{
A a(10);
a.Init(5);
}