Ссылка – это оператор, который осуществляет доступ к данным некоторых переменных. Т.обр., если передать некий параметр а в функцию, то она сможет его изменять только внутри себя, а за пределами этой функции значение а не изменится. Если же передать в функцию параметр &a, то при изменении a внутри функции будет меняться и значение a вне этой функции. При выводе в поток значения &a будет выведен адрес ячейки памяти, где хранится значение переменной a. С точки зрения реализации ссылка это по сути указатель, который жестко привязан к области памяти, на которую он указывает и который автоматически разыменовывается, когда мы обращаемся по имени ссылки.
Объявление вводит в программу одно или несколько имен. Каждое имя обязательно должно быть объявлено, прежде чем оно будет использовано, т.к. компилятору нужно знать, с чем он имеет дело. В C++ объявление является описанием за исключением следующих случаев:
1. оно объявляет функцию без спецификации тела;
2. содержит спецификатор extern при отсутствии инициализатора и тела функции;
3. является объявлением статического компонента в объявлении класса;
4. является объявлением имени класса;
5. является объявлением имени типа typedef.
Описание определяет некоторую сущность, с которой будет оперировать компилятор или программа.