为了像这样使用 cout:std::cout << myObject,为什么我必须传递一个 ostream 对象?我认为这是一个隐含的参数。
ostream &operator<<(ostream &out, const myClass &o) {
out << o.fname << " " << o.lname;
return out;
}
谢谢
为了像这样使用 cout:std::cout << myObject,为什么我必须传递一个 ostream 对象?我认为这是一个隐含的参数。
ostream &operator<<(ostream &out, const myClass &o) {
out << o.fname << " " << o.lname;
return out;
}
谢谢
您没有向 中添加另一个成员函数ostream
,因为这需要重新定义类。您不能将其添加到myClass
,因为ostream
先行。您唯一能做的就是向独立函数添加重载,这就是您在示例中所做的。
仅当它是类的成员函数时,否则它将是第一个参数。因此,它将是:
class ostream {
...
ostream &operator << (const myClass &o);
...
};
因为ostream
是在你上课之前很久写的,你会看到让你的课在那里的问题。因此,我们必须将运算符实现为独立函数:
(return type) operator << ( (left hand side), (right hand side) );
When operators are implemented as member-functions of classes, the left hand side is this
, and the argument becomes the right hand side. (For binary operators - unary operators work similarly.)
因为您正在重载自由函数,而不是成员函数。