If you are not implementing the default constructor, copy constructor or the assignment operator, it is a good idea to declare them but do not implement then. Doing this, you prevent that they are called automatically leaving uninitialized variables.
class X {
X(); // not use
X(const X &); // not use
Object * m_p;
public:
X(Object * p) : m_p(p) {}
};