Возвращать ссылку на локальную переменную при перегрузке & lt; & lt;

Я новичок, пытающийся изучать c ++, поэтому, вероятно, мой вопрос очень прост. Рассмотрим следующий кусок кода:

class pounds
{
private:
int m_p;
int m_cents;
public:
pounds(){m_p = 0; m_cents= 0;}
pounds(int p, int cents)
{
m_p = p;
m_cents = cents;
}

friend ostream& operator << (ostream&, pounds&);
friend istream& operator>>(istream&, pounds&);

};

ostream& operator<< (ostream& op, pounds& p)
{
op<<p.m_p<<"and "<<p.m_cents<<endl;
return op;
}

istream& operator>>(istream& ip, pounds& p)
{
ip>>p.m_p>>p.m_cents;
return ip;
}

Это компилируется и, кажется, работает, но я не возвращаю ссылку на локальную переменную? Заранее спасибо.

1

Решение

Это правильно, так как нет локальных переменных, есть references, что будет принято, когда operators будет называться.

И я предлагаю вам изменить подпись operator << в

std::ostream& operator << (ostream& os, const pounds& p);

поскольку, p не изменяется в функции.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]