#constants
Вопрос:
Здравствуйте, замечательные люди,
Я ломаю голову над этим вопросом. «Const» означает, что содержимое не изменяется, но » amp; » означает, что содержимое может быть изменено. Так как же они оба связаны друг с другом?
Ответ №1:
amp; означает, что содержимое передается по ссылке, не обязательно, что оно изменено. Скорее это означает, что объект не копируется, а это означает, что его конструктор копирования не вызывается для его передачи. Путаница может возникнуть из-за того, что одно (распространенное) использование ссылки заключается в том, чтобы разрешить вызываемому абоненту изменять объект, на который имеется ссылка.
Ссылка const, как показано здесь, является довольно естественным способом выразить, что ссылка на объект будет передана без копирования объекта и что вызываемый объект не будет изменять объект. Это простая и в какой-то степени эффективная оптимизация, когда копирование объекта обходится дорого, вызываемому абоненту не нужно его изменять, и нет никаких соответствующих проблем, связанных с продолжительностью жизни, которые требовали бы создания копии.