std::ostream &operator <<(std::ostream &o, date &d)
{
return o << d.year << d.month << d.day;
}
std::ostream &operator <<(std::ostream &o, date &d)
{
o << d.year << d.month << d.day;
return o;
}
其中哪一项是正确的语法还是正确且可互换? 此外,在所有情况下我们都需要大括号,任何规则,它太混乱。
答案 0 :(得分:2)
一些评论。
首先,我建议您将std::
保留在标准库的对象之前。这避免了很多名称冲突问题。
对我来说,第二个版本更好,因为operator <<
可能会被其他用户重载,有时,它编写得不好,并且缺少返回。然后,第一个语法将失败。
此外,通常,转储流中的对象不会修改它。然后,传递对象const。
然后,在我看来,最好的是以下内容:
std::ostream& operator << (std::ostream& out, const Date& date)
{
out << date.year << "-" << date.month << "-" << date.day;
return out;
}