正如我老师所教导的那样,我曾经实施过运营商<<如
ostream &operator<<(ostream &out, const MyClass &c)
{
cout << someVariables;
return out;
}
但我意识到,我们得到了一个ostream
对象,为什么我们不使用它?
我已经尝试了它并且有效:
ostream &operator<<(ostream &out, const MyClass &c)
{
out << 123;
return out;
}
我该怎么用?每个人的优势是什么?
答案 0 :(得分:-2)
在第一个示例中,如果ostream和MyClass
是<<
运算符的操作数,我们将定义要使用的逻辑。也就是说,如果有人要去
MyClass foo;
cout << foo;
然后它会为cout的ostream类型和MyClass
的类型寻找运算符重载。你很容易就可以去
cout << foo.getSomeProperty()
相反,但如果您在多个地方执行此操作,并且您想要更改功能,那么进行这些更改将意味着更改多个语句,而不是仅仅在一个地方进行更改(即您定义的位置)运算符重载)。