14 / 14 / 1
Регистрация: 17.08.2015
Сообщений: 460
1

Зачем "&" в "ostream& operator<<"?

01.08.2016, 16:32. Показов 3638. Ответов 2
Метки нет (Все метки)

Здарова.

Я представляю, что такое перегрузка операций, но вот наткнулся на непонятный синтаксис.

C++ (Qt)
1
2
3
4
5
6
7
8
enum Months{
    Jan=1, Feb, Mar, Apr, May, Jul, Aug, Sep, Oct, Nov, Dec
};
 
       vector<string> month_tbl1;
       ostream& operator<<(ostream& os, Months m){
       return os<<month_tbl1[m];
}
C++ (Qt)
1
ostream& operator<<(ostream& os, Months m)
Перегружаем <<, а зачем перед operator &?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2016, 16:32
Ответы с готовыми решениями:

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка?
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt;...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов-...

C2280 "bulb &bulb::operator =(const bulb &)": предпринята попытка ссылки на удаленную функцию
Есть некий класс моей реализации под названием bulb, когда я пытаюсь сделать удаление объектов...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

2
827 / 251 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
01.08.2016, 16:33 2
Цитата Сообщение от Blitzor DDD Посмотреть сообщение
Перегружаем <<, а зачем перед operator &?
Уберите, узнаете. Разве это так сложно?
0
804 / 531 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
01.08.2016, 16:38 3
Лучший ответ Сообщение было отмечено Blitzor DDD как решение

Решение

Blitzor DDD,
ostream& operator<<(ostream& os, Months m)
возврат ссылки

Если без амперсанда, то возникала бы ошибка - потоковые объекты нельзя ни копировать, ни присваивать.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2016, 16:38
Помогаю со студенческими работами здесь

В чём разница между возвратом "string" и "const string&" &
class test { public: test(const string&amp; text) { this-&gt;text = text; } string getText()...

Friend ostream& operator<<(ostream& stream, CArr& obj);
CArr.h #pragma once class CArr{ int* arr = nullptr; int size = 10; void swap(int *a, int...

For(auto const& val : stime) .cpp(47) : error C2143: синтаксическая ошибка: отсутствие "," перед ":"
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdexcept&gt; #include &lt;locale&gt; #include...

Error C3867: "String::length": нестандартный синтаксис; используйте "&", чтобы создать указатель на член
В классе написал такой метод, чтобы посчитать количество символов в строке: int String::length()...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru