C++中引用的用法(一)

原文鏈接:C++中引用的基本用法

一、基本用法

創建一個對象的引用只需把聲明符寫成&val的形式即可:

int iVal = 1024;
int &refVal = iVal;

創建引用時,編譯器并不是把拷貝一個值賦給引用,而是把引用和初始的對象綁定在一起,相當于只是給對象起了一個別名??梢酝ㄟ^引用來操作初始化對象,并且通過引用來操作對象時,相當于直接對對象進行了操作。

#include<iostream>
using namespace std;

int main() {
    int iVal = 1024;
    int &refVal = iVal;
    printf("%d %d\n", iVal, refVal);  // 1024 1024
    refVal += 1;
    printf("%d %d\n", iVal, refVal);  // 1025 1025
}

以引用作為函數的形參時,在函數內部改變形參的值,函數外部變量的值也會改變:

void add(int &x) {
    x += 1;
}

int main(){
    int iVal = 1024;
    add(iVal);
    printf("%d\n", iVal); // 1025
}

可以用引用給引用賦值,實際上就是把引用綁定的對象作為初始值:

int iVal = 10;
int &refVal = iVal, &refVal2 = refVal;  //refVal == refVal2 == 10

二、注意事項

1 引用必須初始化

因為引用只是和對象綁定在一起了,而不是拷貝值,一旦初始化完成,引用將永遠和初始對象綁定在一起。所以引用在使用時必須初始化,并且引用不能重新賦值。

int iVal = 1, iVal2 = 2;
int &refVal = iVal;
int &refVal2;  //錯
refVal = iVal2;  //錯

2 不能使用引用的引用

引用本身不是一個對象,所以不能定義引用的引用

3 引用對象的類型必須匹配

引用對象的數據類型必須和初始化對象嚴格匹配。

int iVal = 1024;
double &x = iVal;  //錯誤

4 不能使用字面量初始化引用類型

引用類型的初始值必須是一個對象,不能為一個字面量。

int &refVal = 10;  //錯誤
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。