I thought that in
cout << "Hello world"
cout对象有一个运算符重载,因此我们可以将字符串传递到cout对象的成员函数中。
但是,在一些示例代码中,我看到一个类中定义了运算符重载。
class GenericPlayer : public Hand
{
..
friend ostream& operator <<(ostream& os, const GenericPlayer& aGenericPlayer);
..
};
...
cout << aGenericPlayer << endl;
...
即使不是这样,如果
cout
和aGenericPlayer
都重载了operator<<
,会怎么样呢?
cout
和GenericPlayer
都为GenericPlayer
定义了插入运算符(<<
)? - GManNickGoperator<<
的定义与给定的操作数匹配,那么根据C++03 §13.3[over.match]
中详细解释的复杂重载决议规则会选择最佳匹配。如果“最佳”匹配不唯一或不存在,则会出现错误。 - Adam Rosenfield