自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++入門之談前置++與后置++的區(qū)別

開發(fā) 后端
本文介紹的是C++中前置++與后置++的區(qū)別,適合初學(xué)者閱讀。希望對你有幫助,一起來看。

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

前置++:

  1. type operator++(); 

 

后置++:

  1. const type operator++(int ); 

 

為了編譯器區(qū)分前置和后置++,C++規(guī)定后綴形式有一個int類型參數(shù) ,當函數(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;  

 

 

上面的實現(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)容的介紹,能夠幫助到你。

責任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-01-26 17:53:05

C++入門學(xué)習(xí)

2010-01-25 11:21:01

C++語法

2010-01-15 14:52:33

Visual C++

2010-01-21 18:00:59

C++語言

2010-01-18 10:53:26

2010-01-27 16:52:31

C++語言學(xué)習(xí)

2010-01-27 15:54:49

C++實現(xiàn)程序

2009-08-13 17:30:30

C#構(gòu)造函數(shù)

2010-01-15 10:48:29

C++程序代碼

2011-08-04 13:38:01

Objective-C C++

2009-10-10 14:40:03

C++中struct

2011-04-11 09:43:25

C++C

2010-01-15 16:37:28

Visual C++

2010-01-15 15:52:18

CC++

2024-04-03 09:43:06

C++編程代碼

2011-06-14 12:27:38

C#C++

2011-07-20 18:03:54

CC++

2010-01-13 17:04:36

C++語言

2010-01-26 10:27:43

C++語言

2020-06-17 12:22:44

C覆蓋重載
點贊
收藏

51CTO技術(shù)棧公眾號