類型標識符 &函數名 (形參列表) {
// 函數體
}
函數名前加 & 表示返回引用。返回引用實質是返回指向返回值的隱式指針,因此引用返回值的函數可作賦值運算符左值,且內存中不產生副本。
#include <iostream>
using namespace std;
int &func() {
static int num = 0;
return ++num;
}
void main() {
for (int i=0; i<5; i++) cout << func() << '\t';
cout << endl;
func() = 10; // 作左值賦值
for (int i=0; i<5; i++) cout << func() << '\t';
cout << endl;
}
輸出:1 2 3 4 5 → 賦值後 11 12 13 14 15。驗證函數調用可作左值修改靜態變量。
double array[5] = {100.1, 100.2, 100.3, 100.4, 100.5};
double &change(int i) { return array[i]; }
int main() {
change(2) = 3.14; // 修改 array[2]
change(3) = -99.99; // 修改 array[3]
// 輸出驗證...
}
change(i) 返回 array[i] 的引用,故可作左值直接修改數組元素。注意:不存在數組的引用,但存在指向數組元素的引用。
C4172,但運行時賦值失效、行為未定義。標準編譯器甚至直接報錯。int &func() { int i=10; return i; }new 分配內存的引用:若返回引用未被實際變量接收(僅作臨時值),該內存無法釋放 → 內存洩漏。const:屬性常與業務規則綁定(如賦值觸發聯動),暴露非常量引用允許繞過封裝直接修改,破壞業務完整性。掌握引用返回值,能寫出更高效、語義更豐富的 C++ 代碼,但必須嚴守對象生命周期與封裝原則。