過載小於號
2024.3.30
- 先從用途出發,談為什麼要過載小於號?
過載小於號的情況多是為了排序自定義型別,例如c++中的結構體和類,無法直接透過sort函式排序,
int a[] = {4, 2, 1, 3};
sort(a, a + 4);
對於陣列和stl來說可行,對於類就不能這麼寫
class Person{
private:
int height;
};
Person a[] = ...;
sort(a, a + 4)//錯誤;
不僅僅是sort函式,包括max,min等等的函式都需要重新適應
究其原因可能是這些函式在底層構建時用到了這些運算子,因此過載這些運算子就可用它們排序自定義型別。
- 解釋了使用過載小於號的原因後,再來看如何進行過載
bool operator <(const A& a)//這裡一定要有const
{
return this->num < a.num;//this是指向本結構體的
}
至於為什麼用bool型,應該是和底層建構函式有關,筆者尚未參透。