0
A
回答
3
如果操作者直接映射到功能的含義,然後將其建議使用操作者,例如
==
代替equals
,因爲它比較平等,+
代替add
如果它加入例如數學向量,- 但不是
+
而不是add
,如果它是例如。附加到列表中。
1
我只會這樣做,如果它是絕對清楚它做了什麼。閱讀代碼更好避免超載。因爲你的大腦習慣於閱讀單詞而不是一些操作員。有時候操作員可以做出與猜測不同的事情。但我認爲==
已經足夠清楚了。
如果在某些庫中將它們用作回調函數,則運算符很適用。例如std::sort
。您可以定義將使用的operator <
,它將定義如何對對象進行排序。
2
,正如除其他答案:
非成員operator ==和成員operator ==或某種之間的主要區別等於方法,它在我腦海中,是比較類/結構對象時使用隱式轉換的機會。
所以,如果你有一些結構X
:
struct X {
X() = default;
X(int) {}
};
您可以定義一個非成員operator ==爲X
:
bool operator==(const X&, const X&) {
// some logic here
}
然後讓隱式轉換的用途:
X x;
std::cout << (42 == x) << " " << (x == 42) << std::endl;
相關問題
- 1. 運算符重載:成員函數與非成員函數?
- 2. 重載操作符和朋友函數
- 3. 重載操作符或使函數(C++)
- 4. 操作符函數的操作符重載時出現問題
- 5. 操作員新操作員和新操作員不能重載?
- 6. 測量重載操作的時間和成員函數的函數
- 7. 作爲成員函數重載*乘法運算符兩次?
- 8. 這個函數如何成爲一個重載操作符?
- 9. *操作符重載操作數順序
- 10. 操作員作爲朋友重載函數?
- 11. 重載操作員=錯誤
- 12. 如何重載<<操作符以打印類成員?
- 13. 非成員函數操作符+(...)不能有cv-限定符
- 14. 錯誤操作符<<重載 - 沒有操作員發現
- 15. 問題重載函數成員C++
- 16. C++重載的成員函數錯誤
- 17. 運算符重載VS模板函數
- 18. 爲什麼重載操作符是類的成員只能有一個參數
- 19. 超載>作爲成員函數
- 20. 如何使用for_each作爲重載操作符函數()
- 21. 運算符重載(朋友和成員函數)
- 22. C++重載我的重載操作符?
- 23. 函數的超載流操作符
- 24. 多個操作符[]重載
- 25. 操作符重載「等於」
- 26. C++重載操作符
- 27. Nim操作符重載
- 28. Python:__setattr__操作符重載
- 29. ostream的操作符重載
- 30. 嵌套重載操作符?
沒有「永遠」但是,如果過載操作符足夠直觀,那麼可以回答,但通常認爲這是一個很好的過載 – user