ampersand (&) al final de la variable, etc.

Soy un noob de C ++ y tengo un problema para comprender la sintaxis de c ++ en un código. Ahora estoy bastante confundido.

class date
{
private:
int day, month, year;
int correct_date( void );
public:
void set_date( int d, int m, int y );
void actual( void );
void print( void );
void inc( void );
friend int date_ok( const date& );
};

Con respecto al carácter '&', entiendo su uso general como referencia, dirección y operador lógico ...

por ejemplo int * Y = & X

¿Cuál es el significado de un operador & al final del parámetro?

friend int date_ok( const date& );

Gracias

editar:

Gracias por las respuestas. Si entendí esto correctamente, el nombre de la variable simplemente se omitió porque es solo un prototipo. Para el prototipo no necesito el nombre de la variable, es opcional. ¿Es eso correcto?

Sin embargo, para la definición de la función definitivamente necesito el nombre de la variable, ¿verdad?

Respuestas a la pregunta(5)

Su respuesta a la pregunta