Передача в «const string

#constants

Вопрос:

Здравствуйте, замечательные люди,

Я ломаю голову над этим вопросом. «Const» означает, что содержимое не изменяется, но » amp; » означает, что содержимое может быть изменено. Так как же они оба связаны друг с другом?

Ответ №1:

amp; означает, что содержимое передается по ссылке, не обязательно, что оно изменено. Скорее это означает, что объект не копируется, а это означает, что его конструктор копирования не вызывается для его передачи. Путаница может возникнуть из-за того, что одно (распространенное) использование ссылки заключается в том, чтобы разрешить вызываемому абоненту изменять объект, на который имеется ссылка.

Ссылка const, как показано здесь, является довольно естественным способом выразить, что ссылка на объект будет передана без копирования объекта и что вызываемый объект не будет изменять объект. Это простая и в какой-то степени эффективная оптимизация, когда копирование объекта обходится дорого, вызываемому абоненту не нужно его изменять, и нет никаких соответствующих проблем, связанных с продолжительностью жизни, которые требовали бы создания копии.