myObj* var = new myObj;
var = other1;
больше не нужно
delete var;
var = new myObj;
var = other2;
почему нельзя просто разыменовать вместо того, чтобы снова удалять и размещать?
var->other2;
Разыменование не означает удаление: http://en.wikipedia.org/wiki/Dereference
Я предлагаю вам пройти некоторые уроки по C ++, так как у вас, похоже, есть неправильное понимание того, что на самом деле означает большая часть словарного запаса.
Не забудьте использовать Google.
Ваш вопрос глупый, без обид. Другими словами, у вас здесь есть путаница, которая не может быть решена простым ответом на запрос.
Я настоятельно рекомендую вам прочитать вводный материал на C или C ++. Сеть полна до краев прекрасными лекциями и бесплатными электронными книгами. Вы не пожалеете об этом!
Google вокруг 🙂 и, возможно, вы вернетесь, чтобы ответить на свой вопрос через несколько дней.
Удачного кодирования!
Другие прокомментировали ваше замешательство по поводу терминологии. Я прокомментирую ваш код.
Когда вы делаете:
myObj* var = new myObj;
var = other1;
вы создаете утечка памяти. new myObj
выделил память для структуры и установить var
указать там. Когда вы затем переназначить var
у вас больше нет переменной, указывающей на структуру, которая была выделена. C ++ не имеет автоматической сборки мусора, поэтому эта память больше недоступна, но у вас также нет переменной, с которой вы можете использовать delete
чтобы вернуть его.
var = other1
переназначает указатель, он делает не скопировать содержимое; если вы хотите скопировать структуры, вы должны написать:
*var = *other1;
Когда вы тогда делаете:
delete var;
вы не удаляете исходную структуру, вы удаляете что угодно other
указал на. Это действительно только если эта структура была создана с использованием new
,
Вам определенно нужно вернуться и просмотреть весь свой учебный материал по указателям в C ++.