参照型の関数の引数
これは通常関数の大きなオブジェクトではなく参照渡し方が効率的です。これはオブジェクトへのアクセスに使用された構文を押しながらコンパイラはオブジェクトのアドレスを渡すことができます。Date 構造を使用する例を次に示します。:
// reference_type_function_arguments.cpp
struct Date
{
short DayOfWeek;
short Month;
short Day;
short Year;
};
// Create a Julian date of the form DDDYYYY
// from a Gregorian date.
long JulianFromGregorian( Date& GDate )
{
static int cDaysInMonth[] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
long JDate = 0;
// Add in days for months already elapsed.
for ( int i = 0; i < GDate.Month - 1; ++i )
JDate += cDaysInMonth[i];
// Add in days for this month.
JDate += GDate.Day;
// Check for leap year.
if ( GDate.Year % 100 != 0 && GDate.Year % 4 == 0 )
JDate++;
// Add in year.
JDate *= 10000;
JDate += GDate.Year;
return JDate;
}
int main()
{
}
前のコードは参照渡しされるメンバー選択演算子 () を使用して 。 ポインターのメンバー選択演算子 () – > ではなく構造体のメンバーにアクセスすることを示します。
参照型として渡された引数がポインター型以外の型の構文を確認しますがポインター型の 1 種類の重要な特性を保持します : これらは 定数 として宣言されて変更できません。前のコードの意図がオブジェクト GDate を変更することでないため適切な関数プロトタイプは次のとおりです :
long JulianFromGregorian( const Date& GDate );
関数が JulianFromGregorian 引数を変更できないというこのプロトタイプになります。
型名 から 型名 への標準的な変換があるため参照型を使用できる場所を同じ型のオブジェクトを受け入れることができるプロトタイプとして機能 します。