C++ why is this not compiling

Hello this block of code is not compiling for some reason and for the life of my I can’t figure it out. It gives me an error when it calls the destructor could someone tell me why please

#include <iostream>
using namespace std;
class X {
    X(int i)
        p = new (int);
        *p = i;
    ~X() { delete p; }
    int* p;

int main()
    X x1(1);
    X x2(2);
    x2 = x1;