Что такое амперсанд при использовании после имени класса, например ostream & operator

Я знаю все о указателях, и амперсанд означает "адрес", но что это значит в этой ситуации?

кроме того, при перегрузке операторов, почему обычно объявляют параметры с const?

4 ответов


в этом случае вы возвращаете ссылку на объект ostream. Строго говоря, амперсанд как "адрес" не всегда будет работать для вас. здесьнекоторая информация из C++ FAQ Lite по ссылкам.

Что касается const, корректность const очень важна в безопасности типа C++ и что-то, что вы захотите сделать как можно больше. Другой страница из FAQ помогает в этом отношении. const помогает вам от изменений, связанных с побочными эффектами, искажая ваши данные в ситуациях, когда вы не ожидаете его.


в зависимости от контекста амперсанда это может означать 2 разные вещи. Ответ на ваш конкретный вопрос заключается в том, что это ссылка, а не "адрес". Это очень разные вещи. Очень важно понять разницу.

Справочник По C++

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


Это означает, что переменная является ссылкой. Это что-то вроде указки, но не совсем.

посмотреть: Ссылка (C++)


в объявлениях типа C++ амперсанд означает "ссылка". В этом случае operator << возвращает ссылку на элемент