我想學習運算符在C++中重載。C++運算符重載是相等的運算符
我遵循教程並重載了'=='運算符,以便能夠比較它們之間的類的對象。就像這樣:
bool Vector2::operator==(const Vector2& v) const
{
return ((x_==v.GetX()) && (y_==v.GetY()));
}
我的班級中有(x_
和y_
)兩大瓦爾。我從這個類中創建了兩個對象,給出了一些值並對它們進行了比較,它工作得很好。 但後來我用==
運算符來比較整數,它也工作得很好。現在我期待==
運算符不能處理整數,因爲我已經將它重載到其他位置。但仍然如此。所以我現在有點困惑。我有這個問題:
如何在運行之後像這樣重載的==
仍然可以用來比較整數/浮點數/雙打/ etc?在我看來一個Vector2類對象作爲第二個參數的情況下,它的行爲就像在重載版本中,當它看到別的東西時,它的行爲是正常的?
另一個問題:我有一個class classA
和一個class classB
都與他們2變量,只有名稱不同。我爲classA objA
創建了兩個對象,一個用於classB objB
,我給出了一些默認構造函數的值。
現在是否有可能超載operator ==
做比較if(objA==objB)
?或者表達式中的操作數需要是相同的類型? classA
或classB
?
請幫我解決這個問題。感謝您的閱讀!
什麼類型是'x_'和'y_'? – Malice
你應該添加更多的源信息。 –
您爲'Vector2'定義'==',而不是'int'。重載是_by定義_different_ types/arguments的實現。其他實現不受影響。但是,如果你想爲'int'重新定義***'==',這將是一個不同的故事。 –