Also note that outside of the class" you still cannot be sure that a pointer really points to dynamically allocated object and not a automatic or static object for example. (In fact I think that in many cases you can be even less sure then in member function...) So delete p is risky regardless of whether p is this or not.