1

私は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;
}

これはコンパイルされて機能しているように見えますが、ローカル変数への参照を返していませんか?前もって感謝します。

4

1 に答える 1

2

正しいです。ローカル変数がないため、referencesが渡され、いつoperators呼び出されるかがあります。

署名を に変更することをお勧めしoperator <<ます

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

以来、p機能は変更されていません。

于 2012-09-06T10:51:20.673 に答える