日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++入門之談前置++與后置++的區(qū)別

剛剛接觸C++的新手同學(xué)們,往往會被前置++和后置++搞混。這個概念在C++中還是很重要的,把前置++和后置++弄明白是必須的。下面就給大家介紹前置++和后置++的區(qū)別。

成都創(chuàng)新互聯(lián)自2013年起,先為曲水等服務(wù)建站,曲水等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為曲水企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

前置++:

 
 
  1. type operator++();

后置++:

 
 
  1. const type operator++(int );

為了編譯器區(qū)分前置和后置++,C++規(guī)定后綴形式有一個int類型參數(shù) ,當(dāng)函數(shù)被調(diào)用時,編譯器傳遞一個0做為int參數(shù)的值給該函數(shù)。不這樣規(guī)定,無法區(qū)分,因為都僅以自身對象為入?yún)ⅰ?/p>

下面是一個簡單的例子:

 
 
  1. class CInt {
  2. private :
  3. int m_value;
  4. //
  5. } ;
  6. CInt & CInt:: operator ++ ( ) // 前置的是沒有參數(shù)的,并且返回引用
  7. {
  8. this -> m_value += 1 ;
  9. return * this ;
  10. }
  11. const CInt CInt::peartor ++ (Int) // 后置的有一個匿名參數(shù),并且返回const值
  12. {
  13. CInt old = * this ;
  14. ++ ( * this );
  15. return old;
  16. }

上面的實現(xiàn)解釋了一個關(guān)鍵問題:前置比后置效率高 ,后置需要構(gòu)造臨時對象并返回。

那為什么前置和后置返回參數(shù)不同呢?

前置僅僅是對自身進行運算,并將自身返回,這樣外面可以直接對這個返回對象再進行操作 ,如

 
 
  1. (++it)->function()

后置因其返回的不是原來的對象,此時再進行額外操作,改變的是臨時對象的狀態(tài),并不異義 ,容易誤解。

那為什么不返回const &呢?因為不能這么做,返回引用將無效,臨時對象已經(jīng)不存在了。

所以后置返回const 對象即限制對此臨時對象進行誤操作,并顯式地告訴調(diào)用者此對象僅為原對象的副本。

另外還有一個原因:內(nèi)置int類型并不支持 i++++ .而如果后置++返回一個可修改的副本將與內(nèi)置int類型行為不同。故應(yīng)該禁止使用者對返回值進行修改。

希望通過以上內(nèi)容的介紹,能夠幫助到你。


新聞名稱:C++入門之談前置++與后置++的區(qū)別
瀏覽路徑:http://www.dlmjj.cn/article/djhopho.html