過載小於號

汉德桑姆發表於2024-03-30

過載小於號

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型,應該是和底層建構函式有關,筆者尚未參透。

相關文章