Что означает оператор & при перегрузке операторов? C++
Столкнулся с такой записью:
class PhoneNumber
{friend ostream & operator << (ostream &, const PhoneNumber &);
friend istream & operator >> (istream &, PhoneNumber &);
И абсолютно не понимаю, что означает & здесь и зачем он нужен. По моим представлениям & - это оператор, возвращающий адрес операнды справа. То есть &peremennaya вернет адрес переменной. А тут?
Ответы (1 шт):
& тут относится к типу, возвращаемому из функции - это говорит от том, что функция возвращает ссылку на ostream или istream соответственно.
Да, у & много смыслов, но все они однозначны.
&как оператор.
Может быть унарным или бинарным:
-- В унарном случае он таки да, вернет указатель на операнд, к которому его применили.
-- В бинарном случае - вернет результат побитового И операндов.
&при объявлении типов. Превращает то что слева в ссылку.&как часть логического оператора&&.&&- особенный оператор, он не только делает свою работу, но и являлся (до C++11, см комментарий) точкой следования, и более того, если левый операнд -false, вычисление выражения справа гарантированно производиться не будет, а будет сразу выданоfalseв качестве результата. (Всегда сначала вычисляется то что слева, а потом, если слева -true, вычисляется то что справа.)