В деструкторе не нужно занулять члены класса Компилятор удаляет бесполезные строки в деструкторе, т.к. объект находится в предсмертном состояниии, поэтому в следующем коде зануление ptr фактически не произойдет: MyObject::~MyObject() { delete ptr; ptr = nullptr; // эта строка лишняя }