共用方式為


參考型別的函式傳回

函式可以宣告為傳回參考的型別。 若要讓這類的宣告兩個原因有:

  • 所傳回的資訊是夠大的物件,傳回參考是效率要比傳回複本。

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

它可以是將大型物件傳遞更有效率地 所參考的函式,這也可能是比較有效率的方法傳回的大型物件 所參考的函式。 參考傳回通訊協定可免除將物件複製到暫存位置,請在傳回之前的必要性。

當函式都必評估為左值時,參考傳回型別可以也很有用。 此類別中,特別指派運算子屬於最多載的運算子。 多載運算子將會涵蓋多載運算子

範例

請考慮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";
}

Output

x = 7
y = 9

請注意,該函式x和y宣告為傳回的參考型別。 這些函式可以用於任一邊的指派陳述式。

參考型別的宣告都必須包含以外的初始設定式,在下列情況:

  • 明確extern宣告

  • 類別成員的宣告

  • 在類別內宣告

  • 如果函數或傳回型別引數的函式的宣告

請參閱

參考

參考 (C++)