我是一个尝试学习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;
}

这可以编译并且似乎可以工作,但是我没有返回对局部变量的引用?提前致谢。

最佳答案

没错,因为没有局部变量,所以在调用references时会传递operators

我建议您将operator <<的签名更改为

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

因为p在功能上没有被修改。

关于c++ - 重载<<时返回对局部变量的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12298407/

10-11 23:17