我是一个尝试学习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;
}
这编译并且似乎有效,但我没有返回对局部变量的引用?提前谢谢。
答案 0 :(得分:2)
这是正确的,因为没有局部变量,有references
,将在调用operators
时传递。
我建议您将operator <<
的签名更改为
std::ostream& operator << (ostream& os, const pounds& p);
因为p
在功能上没有被修改。