实施运营商<<对

时间:2017-01-07 20:16:25

标签: c++ operator-overloading ostream

正如我老师所教导的那样,我曾经实施过运营商<<如

ostream &operator<<(ostream &out, const MyClass &c)
{
    cout << someVariables;
    return out;
}

但我意识到,我们得到了一个ostream对象,为什么我们不使用它? 我已经尝试了它并且有效:

ostream &operator<<(ostream &out, const MyClass &c)
{
    out << 123;
    return out;
}

我该怎么用?每个人的优势是什么?

1 个答案:

答案 0 :(得分:-2)

在第一个示例中,如果ostream和MyClass<<运算符的操作数,我们将定义要使用的逻辑。也就是说,如果有人要去

MyClass foo; cout << foo;

然后它会为cout的ostream类型和MyClass的类型寻找运算符重载。你很容易就可以去 cout << foo.getSomeProperty()相反,但如果您在多个地方执行此操作,并且您想要更改功能,那么进行这些更改将意味着更改多个语句,而不是仅仅在一个地方进行更改(即您定义的位置)运算符重载)。