Compartir a través de


Argumentos de la función de tipo de referencia

Suele ser más eficaz pasar referencias, en lugar de objetos grandes, las funciones.Esto permite que el compilador pase la dirección del objeto manteniendo la sintaxis que se habría utilizada para tener acceso al objeto.considere el ejemplo siguiente que utiliza la estructura de 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()
{
}

El código anterior muestra que los miembros de una estructura pasada por referencia se realiza mediante el operador miembro-selección (.) en lugar del operador miembro-selección de puntero (– >).

Aunque los argumentos pasados como tipos de referencia observen la sintaxis de los tipos que no es de puntero, mantienen una característica importante de tipos de puntero: son modificables a menos que se declaren como const.Dado que la intención del código anterior no es modificar el objeto GDate, un prototipo más adecuado de la función es:

long JulianFromGregorian( const Date& GDate );

este prototipo garantiza que la función JulianFromGregorian no cambiará su argumento.

Cualquier funcionan prototipado mientras tomar un tipo de referencia puede aceptar un objeto del mismo tipo en su lugar porque hay una conversión estándartypename al typename**&**.

Vea también

Referencia

Referencias (C++)