Отличается ли значение оператора присваивания в объявлении ссылки от него после? - PullRequest
0 голосов
/ 27 октября 2018

Например:

int a = 0;
int& ref = a;

В этом примере он взял и добавил к нему другое имя - «ref», и они находятся в том же месте в памяти.В этом примере:

int a = 0;
int& ref = a;
ref = 5;

он заменил значение a (так что он заменил «также» значением ref).Так что теперь оператор присваивания получает новое значение?

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

= в определении объекта - , а не присвоение ;это инициализация .И да, значение инициализации не совпадает со значением присваивания.

int a = 0;    // initialize a to 0
int& ref = a; // initialize ref to refer to a
ref = 5;      // assign 5 to ref; ref is a reference, so this assigns 5 to a

Инициализация относится к созданию объекта (в примере кода, int и int&; знак = в инициализации указывает компилятору, что использовать в качестве начального значения этого объекта.

Назначение относится к установке нового значения дляуже существующий объект. Таким образом, int a = 0; - это инициализация; a = 3; - это присвоение.

0 голосов
/ 27 октября 2018

Когда референт инициализируется, он связывается с объектом.

После этого вы модифицируете связанный объект, а не ссылку.

Думайте о ссылке как о указателе, который нельзя изменить после создания (но он всегда указывает на действительный объект, нулевая ссылка невозможна).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...