if you build an object from other object and the last one will be deleted then the first object will use already unallocated memory because its pointer points to the same memory as the pointer of the deleted object.
In the copy constructor you shall allocated ne memory and copy there the original object. The same is valid for the copy assignment operator but it also requires to delete its currrent matrix.