Ответ 1
Это означает возвращаемое значение по ссылке:
int& GetValue()
^ Means returns a reference of int
Как
int i = 10;
int& GetValue() {
int &j = i;
return j;
}
j
является ссылкой i
, глобальной переменной.
Примечание. В С++ у вас есть три вида переменных:
- Значение переменной, например
int i = 10
. - Исходная переменная, например
int &j = i;
ссылочная переменная создает псевдоним другой переменной, оба являются символическими именами того же места в памяти. - Адресная переменная:
int* ptr = &i
. называемых указателями. Переменные указателя используют для хранения адреса переменной.
Отказ в объявлении
Pointer:
int *ptr = &i;
^ ^ & is on the left side as an address operation
|
* For pointer variable.
Reference:
int &j = i;
^
| & on the right side for reference
Помните, что в C у вас есть только два значения переменных и адреса переменных (указатель). Контрольные переменные находятся в С++, а ссылки просты в использовании, как переменные значений, и такие же, как переменные указателя.
Указатели выглядят следующим образом:
j = &i;
i j
+------+ +------+
| 10 | | 200 |
+------+ +------+
202 432
Ссылка выглядит так:
int &j = i;
i, j
+------+
| 10 |
+------+
Для j не выделяется память. Это псевдоним того же места в памяти.
Каковы различия между переменной указателя и ссылочной переменной в С++?
- Указатель может быть повторно назначен любым количеством раз, в то время как ссылка не может быть переназначена после инициализации.
- Указатель может указывать на NULL, в то время как ссылка никогда не может указывать на NULL
- Вы не можете взять адрес ссылки, как вы можете, с помощью указателей.
- Theres нет "ссылочной арифметики" (но вы можете взять адрес объекта, на который указывает ссылка, и сделать на нем арифметику указателя, как в & obj + 5).
Потому что, как вы прокомментировали, у вас есть вопросы о различиях между указателями и ссылочными переменными, поэтому я настоятельно рекомендую вам прочитать связанные страницы из ссылки, приведенной в моем ответе.