C++精進之路4:引用的用法

pan16309發表於2020-12-15

一、什麼是引用

C++中的引用,是變數的別名,使用時必須繫結需要引用的實體, 也就是初始化。對引用的操作與對其繫結的實體的操作是完全等同的,用法示例:

int & ref = number;

二、引用的用法

1、引用作為函式引數存在

int swap(int &a ,int &b)

     int tmp;

    tmp = a;

    a    = b;

    b    = tmp;

}

引用用於代替C語言中的地址傳遞,是一種沒有複製開銷的傳遞,多次呼叫引用不會造成程式的開銷,可以提高程式執行的效率;引用傳遞引數更加直觀自然,替換指標傳遞的時候,還可以避免產生野指標。

2、引用作為返回值

int & getNumber(int idx)

{……}

返回值引用,可以對函式返回的變數直接進行修改;

這種用法需要特別注意的是,如果返回區域性變數的值,由於變數在函式執行結束之後已經銷燬,返回值是無法預期的;另外返回堆空間引用的實體,會有記憶體洩露的風險,特別注意要做好記憶體回收的策略。

3、引用與指標的區別

相同點:引用的底層實現仍然是指標,都有“地址”的概念;

不同點:

a、引用是沒有實體的,只是變數的別名,定義後必須繫結相應的實體;指標是有實體的變數,定義後可以不初始化;

b、引用一經定義繫結,就不能再改變繫結的物件,而指標比較靈活,可以改變指向的地址。

相關文章