参照型の関数の戻り値
関数は参照型を返すように宣言できます。このような宣言がする 2 とおりの理由があります :
返される情報は十分に大きいオブジェクトで参照を返すことがないことより効率的コピーを返します。
関数の型は左辺値である必要があります。
これは参照を関数 の 大きいオブジェクトを渡す方が効率的となるように参照によって関数 から 大きいオブジェクトを返す方法がより効率的です。参照はプロトコルは返される前に一時的な場所にオブジェクトをコピーする必要がなくなります。
参照は戻り値の型は関数は左辺値に評価する必要がある場合に便利です。ほとんどのオーバーロードされた演算子は代入演算子特にカテゴリに分類されます。オーバーロードされた演算子は オーバーロードされた演算子 付きで表示されます。
使用例
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 の明示的宣言
クラス メンバーの宣言
クラスの宣言
関数の関数または戻り値の型への引数の宣言