Изменяет ли ссылка состояние референта - PullRequest
1 голос
/ 21 мая 2011

Пока я читаю

--- ссылки - это не указатели, это сам объект, ссылка - это сущность, которая является псевдонимом для другого объекта.

--- ссылки никогда не могут представлять NULL

--- Справочные переменные позволяют двум именам переменных обращаться к одной и той же ячейке памяти:

--- позже нельзя сделать ссылку на другой объект

--- Ссылка не является переменной, так как переменная вводится только объявлением объекта. Объект является областью хранения, и в C ++ ссылки не (обязательно) занимают какую-либо память.

теперь строка ниже преобразует целые переменные в целые константы

const Array& ref = integers

кроме того, я читаю это также в котором говорится, что вы можете изменить состояние референта.

Пожалуйста, предложите / уточнить.

Ответы [ 2 ]

3 голосов
/ 21 мая 2011

Нет, оно не конвертируется integers. Теперь у вас есть псевдоним integers, через который вы не можете его изменить. Вы все еще можете изменить integers через оригинальное имя:

int i = 0;
int const& i_ref = i;
i = 5;
cout << i_ref; // outputs 5

Приведенный выше пример также показывает, как вы можете изменить состояние судьи.

1 голос
/ 21 мая 2011

Вы не можете изменить состояние константной ссылки.Кроме того, все, что вы упомянули, истинно.

Так, например:

const int& ref = integers;
ref = 5;

не удастся скомпилировать.Где as

int& ref = integers;
ref = 5;

будет компилироваться, и это изменит значение, сохраненное в целых числах, на 5.

Кроме того, константная ссылка означает, что вы не можете изменить значение объекта, на который она ссылается, используя ссылку.Вы все еще можете изменить его, используя исходное имя переменной.Например:

const int& ref = integers;
integers = 5;
std::cout<<ref<<", "<<integers<<std::endl;

полностью действителен и выдаст:

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