學完物件導向程式設計後可以來了解重載運算子重載,operator overloading也可以叫做運算子覆載,或運算子多載,反正意思差不多,這裡就稱為重載運算子重載,至於為何要使用運算子重載呢?先來看一個例子:
這個例子中可以很清楚的看到我用一個「加號」將a和b相加,這當然沒問題,那下面這個例子呢?
這個例子中會得到一個錯誤,因為此時這個「加號」它不知道該怎麼用,因為在這個class裡有兩個數,程式不知道要加哪一個,此時我們就會用到運算子重載,重新定義一個運算子,那定義方式如下:
此時可以完整解決原本的問題,我們將「加號」定義成第一個物件的a加上第二個物件的b,接著我將它存成z_data,並回傳。
在使用sort()函式時也可以使用運算子重載:
此處我們將 <
這個符號重新定義,使我們的sort在比較的時候,能清楚知道如何比較,然而我們這邊這樣定義運算子重載是不太好的,好一點的作法如下:
我們加入const關鍵詞,因為我們只需得到資料,並不會更改他們的值,所以此處是read-only的功能,且若不小心改到裡面的資料還會出現error告訴我們,更方便除錯。