Вы убираете беспорядок, а стандартная библиотека убирает беспорядок.Память, которую выделяет std :: string, - это беспорядок.
Поведение по умолчанию для деструктора - вызывать деструкторы для каждой базы и члена данных.Ваша строка является членом данных, поэтому вызывается ее деструктор.Его деструктор делает все, что нужно сделать здесь, так что больше нет необходимости (и на самом деле это было бы очень неправильно) что-либо здесь очищать, чем если бы у вас была строка в качестве локальной переменной в main ().