Какова цель ключевого слова "const" для ссылки, если объект, на который она ссылается, не является объектом const? Есть ли разница между тем, что делает r1 и r2 (ниже)?
int i = 42; // non const object
const int &r1 = i; // const reference to non const object
int j = 25; // non const object
int &r2 = j; // non const reference to non const object
Вот цитата из CPP Primer 5th:
"Программисты C ++ склонны сокращать фразу" ссылка на const "как
«Const reference». Это сокращение имеет смысл - если вы помните, что оно
это сокращение.
Технически говоря, нет постоянных ссылок. Ссылка не является
объект, поэтому мы не можем сделать ссылку самой константой. Действительно, потому что там
нельзя ссылаться на другой объект, в каком-то смысле все
ссылки являются постоянными. Относится ли ссылка к const или неконстантному
Тип влияет на то, что мы можем сделать с этой ссылкой, а не на то, можем ли мы изменить
привязка самой ссылки. "
Я думаю, это означает, что создание ссылки "const", когда она ссылается на неконстантный объект, абсолютно ничего не делает. Мы также можем исключить это ключевое слово const при определении этой ссылки.
Задавайте этот вопрос здесь для подтверждения.
Редактировать: похоже, моя первоначальная гипотеза неверна. Теперь я понимаю, что константная ссылка на неконстантный объект имеет цель: не дать этой ссылке изменить объект. Неконстантный объект все еще может быть изменен другими средствами, но не этой константной ссылкой.
Спасибо всем.