我認爲在在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]'中闡述的複雜的重載解析規則選擇「最佳」匹配。如果「最佳」匹配不是唯一的或不存在,那麼這是一個錯誤。 –