傳參時 const string& 相對 const string 有哪些優勢?


一句話,引用避免創建拷貝副本。

C++中值傳遞和引用傳遞的方式。
C++的值傳遞(pass-by-value),是從調用的地方把值復制一遍傳給函數,這樣做有兩個問題,第一,需要將實參拷貝到形參處,形成實參的副本,有時間和空間的開銷,若實參為結構體或者類的話,那么時空開銷將會非常大;第二、函數中對實參副本的修改並不會影響到函數調用位置實參的值。
C++的引用傳遞(pass-by-reference),一方面,參數傳遞的是把實參的地址拷貝到形參,這樣形參和實參對應的是同一塊兒內存地址,那么對形參的修改自然會反映到實參上;另一方面,C++中指針或者引用只占4字節,所以時空開銷也能接受。

好了,我們現在來看一下const string & parameter 和 const string parameter的比較

參數聲明中const,const string parameter表明復制出來的副本(也就是形參)你不會修改。const string & parameter表明你不會對調用函數的實參進行修改

另一方面:

因為 C++ 規定引用不能為空,所以一個函數傳進來引用你就可以直接用,而傳進來指針你還需要判斷指針是否為空
如果直接傳值的話,對於對象就要新建一個臨時對象——這個步驟需要調用復制構造函數,如果對象本身比較大的話就會造成很嚴重的資源浪費。而傳引用就可以避免這一點——如果我們需要只讀地訪問一個對象的話使用常引用可以有效避免資源浪費

參考網址 :
傳參時 const string& 相對 const string 有哪些優勢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM