我不太熟悉C++,但我有設計和實現鏈表的任務。這是我在遞:「此泄密」鏈接列表泄漏?
template <typename T>
struct Node
{
Node() : next(nullptr) {}
Node(T const & val) : next(nullptr), value(val) {}
Node * next;
T value;
};
template <typename T>
class LinkedList
{
public:
LinkedList()
{
begin_ = new Node<T>;
current_ = begin_;
}
~LinkedList()
{
delete begin_;
}
void insert(T const & value)
{
Node<T> * node = new Node<T>(value);
node->next = current_->next;
current_->next = node;
current_ = current_->next;
}
void remove()
{
Node<T> * tmp = current_->next;
if(!end())
{
current_->next = current_->next->next;
}
delete tmp;
}
bool end() const
{
return current_->next == nullptr;
}
void reset()
{
current_ = begin_;
}
void advance()
{
if(!end())
{
current_ = current_->next;
}
}
T get() const
{
return current_->next->value;
}
private:
Node<T> * begin_;
Node<T> * current_;
};
我通過了分配,但我的老師在析構函數~LinkedList()
強調delete begin_
和寫在它的旁邊。我一直在想如何delete begin_
可能泄漏,但我仍然不明白。有人可以幫助我嗎?
哦,你的老師可能錯過了說你沒有按照[三法則(http://stackoverflow.com/questions/4172722/什麼 - 是最規則的三)。 –
@Als你是什麼意思? –