對此一直理解不深,今日偶然之間發(fā)現(xiàn)自己根本沒有理解他們.
今天我發(fā)現(xiàn):
?cout<<a++<<endl;
?cout<<++a<<endl;
的值不同,a++返回的是原值,++a返回的是遞加后的值.
我不禁冒了冷汗,寫了這么多代碼,居然會(huì)不明白這么簡單的東西,還好之前代碼沒有出現(xiàn)問題.
我為此懊惱不已.細(xì)節(jié)往往是最重要的,誠然如此啊.
帶著一個(gè)問題:為什么要分前置和后置?
大家都知道前置比后置要效率高,難道就只是為了效率而存在,顯然不會(huì),如果這樣,后置就沒有存在的任何理由.

class?CInt
{
??private:
????int?m_value;
??//
};
CInt?&?CInt::operator++(?)?//?前置的是沒有參數(shù)的,并且返回引用


{
??this->m_value+=1;
??return?*?this;
}
const?CInt?CInt::opeartor++(CInt)?//?后置的有一個(gè)匿名參數(shù),并且返回const值


{
??CInt?old?=?*this;
??++(*this);
??return?old;
}

看到這個(gè)算符重載的代碼就很明白了.
后置++返回的是傳入的參數(shù),而前置傳入的是引用,自然返回的也是引用,也就只能是改變的值.