回答
當重載operator ==
你應該做一個static
方法,它採用兩個實例作爲參數:
public static bool operator == (MyClass leftSide, MyClass rightSide) {
return true;
}
public static bool operator != (MyClass leftSide, MyClass rightSide) {
return !(leftSide == rightSide);
}
static
背景讓你的操作代碼感到更加「對稱」,在這個意義上,代碼執行比較不屬於左側實例或右側實例。
此外,static
使操作符「虛擬化」成爲不可能(您仍然可以通過調用虛擬函數在實現中執行此操作,但必須明確執行)。
ohh我明白了......第一個參數是左操作數嗎? – Kasparov92
@ Kasparov92是的,第一個操作數是左側,第二個操作數是右側。 – dasblinkenlight
@ Kasparov92是的,但順序應該不重要,因爲平等應該是對稱的。 – juharr
你需要static
,你需要兩個參數,而不只是一個。
==
和!=
總是二元運算符(兩個參數),而不是一元(一個參數)。
正如你可以在MSDN tutorial中看到的那樣,這些是二進制運算符,因此它們需要兩個參數。運營商也應該是靜態,因爲它們將是類的一部分,而不是實例。見this & this。
public static bool operator == (MyClass nm1, MyClass mn2)
{
return true;
}
public static bool operator != (MyClass m1, MyClass m2)
{
return true;
}
public static bool operator == (MyClass m1, MyClass m2)
{
return true;
}
public static bool operator != (MyClass m1, MyClass m2)
{
return true;
}
正確的簽名是:
public static bool operator ==(MyClass nm1, MyClass other)
{
}
public static bool operator !=(MyClass nm1, MyClass other)
{
}
第二個參數並不一定是MyClass
類型雖然 - 但是它們中至少有一個必須是。
- 1. C++重載操作符==
- 2. C++:重載操作符=
- 3. C++重載操作符
- 4. C++操作符重載
- 5. C#重載==操作符類
- 6. C++操作符重載,
- 7. C++操作符重載
- 8. C#重載==操作符
- 9. C++重載==操作符
- 10. C++重載我的重載操作符?
- 11. C++操作符重載和符號
- 12. C++重載操作符工作
- 13. C++重載=操作
- 14. 重載==操作符
- 15. 使用操作符重載在C++
- 16. C++操作符重載 - 查詢
- 17. C#優化重載操作符
- 18. 突破重載提取操作符? (C++)
- 19. 重載操作符+ =和+矩陣C++
- 20. C++模板操作符重載
- 21. C++我應該重載操作符嗎?
- 22. C++重載輸出操作符
- 23. 操作符重載和繼承C#
- 24. ()操作符重載在左側C++
- 25. 帶類的C++重載操作符
- 26. C++操作符「>>」重載錯誤
- 27. C++重載操作符double * Vec
- 28. 在myStack.h中的C++重載操作符==
- 29. C++,重載操作符+矩陣
- 30. 在C++中重載刪除操作符
運算符方法是靜態的。這意味着'=='和'!='有兩個操作數。點擊同一頁面上的「操作員重載教程」鏈接。 –
'公共靜態布爾運算符==(MyClass m1,MyClass m2)' – willaien