Каков амперсанд для при использовании после имени класса как ostream& оператор <<(…)?

Если необходимо искать многих время в том же списке, он может окупиться для создания индекса.

Выполняют итерации однажды через и создают HashMap с, равняется значению, которое Вы ищете как ключ и соответствующий узел как значение. Если Вам нужно, все вместо любого из данного равняются значению, то позволенный карта иметь тип значения списка и создает целый список в начальном повторении.

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

21
задан Kyle Walsh 15 October 2009 в 16:32
поделиться

4 ответа

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

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

15
ответ дан 29 November 2019 в 21:32
поделиться

Это означает, что переменная является ссылкой. Это похоже на указатель, но не совсем.

См .: Ссылка (C ++)

3
ответ дан 29 November 2019 в 21:32
поделиться

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

Поскольку он фактически возвращает * this , это фактически то же самое ostream и означает, что вы можете связать вызовы к operator << , аналогично этому:

os << "Hello" << " " << "World" << endl;
3
ответ дан 29 November 2019 в 21:32
поделиться

В зависимости от контекста амперсанда он может означать две разные вещи. Ответ на ваш конкретный вопрос: это ссылка, а не «адрес». Это очень разные вещи. Очень важно понимать разницу.

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

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

7
ответ дан 29 November 2019 в 21:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: