我认为在在C++中会发生什么,如果两个对象都重载operator <<?一个<< b
cout << "Hello world"
cout
对象具有一个运算符重载,以便我们可以通过strings
成cout
对象的成员函数。
但在一些示例代码中,我看到一个类中定义了一个运算符重载。
class GenericPlayer : public Hand
{
..
friend ostream& operator <<(ostream& os, const GenericPlayer& aGenericPlayer);
..
};
...
cout << aGenericPlayer << endl;
...
即使不是这样,如果什么都cout
和aGenericPlayer
超载operator<<
?
您是否问'cout'和'GenericPlayer'是否定义了一个插入运算符(' << GenericPlayer'')? – GManNickG
如果'operator <<'的多个定义与给定的操作数匹配,则根据C++ 03§13.3'[over.match]'中阐述的复杂的重载解析规则选择“最佳”匹配。如果“最佳”匹配不是唯一的或不存在,那么这是一个错误。 –