共用方式為


參考類型函式傳回

函式可宣告為傳回參考類型。 進行此類宣告有兩個原因:

  • 傳回的資訊是一個夠大的物件,因此傳回參考比傳回複本更有效率。

  • 函式的類型必須是左值。

正如其可以透過傳址方式以更有效率地將大型物件「傳至」函式,其也可以更有效率地透過傳址方式從函式「傳回」大型物件。 使用參考傳回通訊協定就不需要在傳回之前將物件複製到暫存位置。

當函式必須評估為左值時,參考傳回類型可能也會很有用。 大部分的多載運算子都屬於此類,特別是指派運算子。 多載運算子中涵蓋了多載運算子的說明。

範例

請考量 Point 範例:

// refType_function_returns.cpp
// compile with: /EHsc

#include <iostream>
using namespace std;

class Point
{
public:
// Define "accessor" functions as
//  reference types.
unsigned& x();
unsigned& y();
private:
unsigned obj_x;
unsigned obj_y;
};

unsigned& Point :: x()
{
return obj_x;
}
unsigned& Point :: y()
{
return obj_y;
}

int main()
{
Point ThePoint;
// Use x() and y() as l-values.
ThePoint.x() = 7;
ThePoint.y() = 9;

// Use x() and y() as r-values.
cout << "x = " << ThePoint.x() << "\n"
<< "y = " << ThePoint.y() << "\n";
}

輸出

x = 7
y = 9

請注意,函式 x 和 y 已宣告為傳回參考類型。 這些函式可在指派陳述式的任一邊使用。

除了下列情況下之外,參考類型的宣告必須包含初始設定式:

  • 明確宣告 extern

  • 類別成員的宣告

  • 類別中的宣告

  • 函式引數或函式傳回類型的宣告

請參閱

參考

參考 (C++)