0
我正在讀一本關於數據結構的書,現在正試圖實現單鏈表數據結構。在實施迭代器,我所遇到過載的前綴和後綴增量的這些實現:前綴和後綴增量運算符在C++中爲迭代器重載實現之間的區別
iterator &operator++()
{
this->current = this->current->next;
return *this;
}
iterator &operator++(int)
{
iterator old = *this;
++(*this);
return old;
}
我知道,第一個是前綴,第二個是爲後綴,但我還沒有明白是爲什麼重載後綴增量有不同的代碼?如果我這樣做會怎麼樣?
iterator &operator++(int)
{
this->current = this->current->next;
return *this;
}
在此先感謝。
我認爲第一個是返回一個副本 – 2013-03-11 18:56:17
爲什麼是第一個版本不對? – 2013-03-11 18:57:11
@KudayarPirimbaev:不,請注意聲明中的'&'(「iterator&operator ++」)。它返回一個局部變量的引用,因此具有未定義的行爲。 – thiton 2013-03-11 18:57:15