參考 是現有變數的別名,一旦初始化綁定到某物件,即不可重新綁定。它不是新物件,不佔用額外儲存空間,操作參考即操作原變數。
| 特性 | 參考 | 指標 |
|---|---|---|
| 空值 | 不存在空參考,必須綁定合法記憶體 | 可為 nullptr |
| 重新綁定 | 初始化後不可改變綁定對象 | 隨時可指向其他物件 |
| 初始化時機 | 宣告時必須初始化 | 可延遲初始化 |
語法:型別 &參考名 = 變數;。& 在此處讀作「參考」。
int i = 17;
int& r = i; // r 是 i 的參考
double d = 11.7;
double& s = d; // s 是 d 的參考
參考初始化後,r 與 i 完全等價:
i = 5;
cout << r; // 輸出 5
r = 10;
cout << i; // 輸出 10
#include <iostream>
using namespace std;
int main() {
int i; double d;
int& r = i;
double& s = d;
i = 5;
cout << "i: " << i << ", r: " << r << endl;
d = 11.7;
cout << "d: " << d << ", s: " << s << endl;
return 0;
}
輸出:
i: 5, r: 5 d: 11.7, s: 11.7
void func(int& param); 呼叫時 func(var); 無需取址。const int&(常數參考),兼具效能與安全。int& func();auto&& 產生萬用參考,屬進階主題。const int& r = 10; 合法,暫時物件壽命延長至參考存活期結束。const T& 作為唯讀參數,T& 作為輸出/修改參數,T&& 作為移動語意參數(C++11)。