Указатели для начинающих (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)
{
    // код конструктора располагается здесь
}