Sdílet prostřednictvím


Argumenty funkce typ odkazu

Je často efektivní průchod odkazy než velké objekty, funkce.To umožňuje kompilátor předat adresu objektu při zachování syntaxe, který by byl použit pro přístup k objektu.Zvažte následující příklad, který používá Date struktury:

// 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()
{
}

Předcházející kód ukazuje přístup členů struktury předání odkazem pomocí operátoru výběr členů (.) namísto operátoru ukazatel výběru členů (– >).

Ačkoli argumenty předané jako referenční typy dodržovat syntaxi typy ukazatel myši, zachovávají jednu důležitou vlastnost typy ukazatele: jsou upravitelné Pokud není deklarován jako const.Protože záměrem předcházejícím kódu je objekt upravit GDate, je vhodnější prototyp funkce:

long JulianFromGregorian( const Date& GDate );

Tento prototyp zaručuje, že funkce JulianFromGregorian změní svůj argument.

Jakékoli funkce prototyped přijetí typ odkazu můžete objekt stejného typu v místě svého přijmout, protože standardního převodu z typename na typenamea.

Viz také

Referenční dokumentace

Odkazy (C++)