Указатели для начинающих (Pointers) - Ссылки
ОГЛАВЛЕНИЕ
Ссылки
Ссылки, в какой-то степени, не входят в пределы данной статьи. Тем не менее, поскольку люди часто спрашивают про них, мы можем кратко о них рассказать. Они очень связаны с указателями, в том смысле, что во многих случаях они могут быть использованы в качестве альтернативы. Если вы вспомните, что амперсанд (&) читается как "по адресу" в случае, если он не в определении. В случае если он присутствует в определении, как это показано ниже, то он читается как "ссылка на".
int& Number = myOtherNumber;
Number = 25;
Ссылка также указывает на myOtherNumber, за исключением того, что она автоматически разыменовывается. Итак, ссылки ведут себя так, как будто они являются значениями, а не указателями. Аналогичное использование указателей показывается ниже:
int* pNumber = &myOtherNumber;
*pNumber = 25;
Другим различием между указателями и ссылками является то, что вы не можете "перенаправить" ссылку. То есть, вы не можете изменить то, куда она ссылается. К примеру, следующий код выведет "20."
int myFirstNumber = 25;
int mySecondNumber = 20;
int &myReference = myFirstNumber;
myReference = mySecondNumber;
printf("%d", myFristNumber);
В случае с классом, значение ссылки должно быть установлено конструктором следующим образом:
CMyClass::CMyClass(int &variable) : m_MyReferenceInCMyClass(variable)
{
// код конструктора располагается здесь
}