Вы не можете так делать.Nod
выходит из области видимости в конце конструктора (последний }
), что означает, что его память становится недействительной, что означает, что List_Head
указывает на недопустимую память.
Если вы хотитечтобы сохранить память, вы должны использовать new
, например
List_Head = new Node(num);
Просто убедитесь, что delete
то, что вы new
!Но вы должны быть осторожны с этим!Память может просочиться, если вы не удалите ее, или она может быть удалена дважды, если вы неправильно ее обработаете.В частности, вы должны быть уверены, что также реализовали деструктор, конструктор копирования и оператор присваивания для правильной обработки выделенной памяти.
В качестве альтернативы, вы можете использовать умные указатели (такие как std::shared_ptr
, если выиспользуя C ++ 11), чтобы обработать удаление для вас, чтобы вы не теряли память и не удаляли память дважды.Возможно, вам все равно придется определить конструктор копирования и оператор присваивания, в зависимости от того, как вы хотите, чтобы ваш класс действовал (потому что без пользовательских версий этих версий вы получите поверхностную копию объекта вместо глубокая копия , что может быть не тем, что вы хотите).