C++中的前置和後置++

來源:互聯網
上載者:User

標籤:自增   實現   首碼   就是   重載   拷貝   尾碼   沒有   引用   

在C++中進行操作符重載的時候,前置++返回的是一個引用。

這就設計到了對於基本變數進行前置操作時候的理解了。

例如,對於int類型變數,在進行前置++的時候,是會將i進行加1,然後返回i的引用。而i++是先建立一個i的副本,然後在對i進行加1,最後返回i的副本的值(注意這裡是值而不是引用)。

通常,c++的內建類型都要求首碼式操作符返回被增量或被減量對象的引用;

而要求尾碼式操作符返回被增量活被減量對象做增或減操作之前的副本(這裡邊就存在記憶體拷貝,這就涉及到了效率的因素)

因此,在進行自定類的操作符重載的時候,也是類似的要求,那就是前置++返回的是對應的引用,而後置++返回的操作之前的一個副本值(而不是引用,這個應該是一個臨時的變數,之後就會被析構掉了吧,我覺得!)

其實,在實現尾碼式版本時,一般先儲存對象做自增/減之前的副本,然後調用自己的首碼版本來實現自增操作,最後將先前年保留的副本

返回。這裡需要注意的是,尾碼式版本中,傳回值是尚未自增的原值,但對象本身已經做了自增操作了。

總結來講:就是尾碼操作符,中間會有一個臨時變數來儲存沒有更改之前的值,最後返回的是這個臨時變數(也就是那個副本)

C++中的前置和後置++

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.