Эти операции можно выполнять, но они не будут иметь эффекта, который вы (вероятно) после.
Запись указателя на строку сохранит только значение указателя, то есть адрес указанного объекта. Это строка более или менее постоянной длины, например 0x7f2b93c91780 (в 64-битной системе). Естественно, это не фиксирует состояние реального объекта.
Когда вы используете delete
для указателя, указанная память будет возвращена системе; это больше не ваше использовать. Сам указатель не удаляется, операция влияет только на указанную память. Кроме того, значение указателя фактически не изменяется, когда вы используете delete
для него. Таким образом, нет никакой разницы, если вы теперь перезагружаете его, считывая его из строки, хранящейся где-то еще: он по-прежнему указывает на память, которой вы больше не владеете, и, следовательно, не можете читать или писать без вызова неопределенного поведения .
Как и предложил PiotrLegnica, вам нужно сериализовать весь объект в строку, а затем заново создать объект из сериализованной версии (десериализовать его).