gpt4 book ai didi

c++ - 运算符重载困惑C++

转载 作者:行者123 更新时间:2023-11-30 03:53:58 24 4
gpt4 key购买 nike

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

以下哪些语法是正确的,或者它们都正确且可以互换?此外,在所有情况下我们都需要大括号,任何规则都太困惑了。

最佳答案

一些评论。

首先,我鼓励你保持std::在标准库的对象之前。这避免了很多名称冲突问题。

对我来说,第二个版本更好,因为 operator <<可能会被其他用户重载,有时,它写得不好,缺少返回。然后,第一个语法将失败。

此外,一般来说,将对象转储到流中不会对其进行修改。然后,传递对象常量。

那么,在我看来,最好的是:

std::ostream& operator << (std::ostream& out, const Date& date)
{
out << date.year << "-" << date.month << "-" << date.day;
return out;
}

关于c++ - 运算符重载困惑C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29840893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com