首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 參考(Reference)深度解析:語法、與指標差異、函數參數與返回值應用

     編輯:C++ 入門

C++ 參考(Reference)深度解析:語法、與指標差異、函數參數與返回值應用

參考 是現有變數的別名,一旦初始化綁定到某物件,即不可重新綁定。它不是新物件,不佔用額外儲存空間,操作參考即操作原變數。

參考 vs 指標:三大核心差異

特性參考指標
空值不存在空參考,必須綁定合法記憶體可為 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

兩大核心應用場景

1. 函數參數傳遞(Pass by Reference)

  • 避免大型物件複製開銷。
  • 允許函數修改實參(輸出參數)。
  • 語法:void func(int& param); 呼叫時 func(var); 無需取址。
  • 若不需修改,請用 const int&(常數參考),兼具效能與安全。

2. 函數返回值(Return by Reference)

  • 回傳現有物件的參考(如類別成員、靜態變數),非區域變數。
  • 語法:int& func();
  • ⚠️ 絕不可回傳區域變數參考,函數結束時區域變數銷毀,導致懸空參考。

常見陷阱與最佳實務

  • 參考摺疊:模板與 auto&& 產生萬用參考,屬進階主題。
  • const 參考延長暫時物件壽命:const int& r = 10; 合法,暫時物件壽命延長至參考存活期結束。
  • 類別成員若為參考,必須在建構函式初始化列表初始化,且類別預設無法複製/指派(需自訂)。
  • 偏好 const T& 作為唯讀參數,T& 作為輸出/修改參數,T&& 作為移動語意參數(C++11)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved