概念
在C語言中,運算符隻能用于基本資料類型,例如,可以用==判斷兩個整數是否相等,但不能用于判斷字元串是否相等,也不能用于判斷結構體,也不能用于判斷類。
在C++中,運算符的重載就是把運算符的符号賦予新的含義,如果類重載了==運算符,那麼就可以用==判斷兩個類是否相等。
運算符重載
operator 是C++的一個關鍵字,它和運算符(如==)一起使用,表示一個運算符重載函數,在了解時可将operator和運算符(如operator==)視為類的一個成員函數名。
示例:

CGirl類重載了==運算符,定義了operator==函數,用于判斷兩個對象是否相等,實際上是判斷兩個對象的成員變量m_name是否相同,如果相同,對象就相等。
完整的代碼(book230.cpp)
運作結果
通過上述結果能夠知道,因為操作符重載函數“operator==”是CGirl類的一個成員函數,是以對象Girl1、Girl2都可以調用該函數。其中的 if (Gril1 == Gril2) 語句,相當于對象Gril1調用函數“operator==”,把對象Girl2作為一個參數傳遞給該函數,進而實作了兩個對象的比較。
各位,我們把語言改為if (Gril1 != Gril2) ,會如何?
編譯如下:
編譯無法通過,因為CGirl類并沒有重載!=運算符。
個人經驗
string類重載了+、=、==、!=等運算符,對程式員來說,确實感覺有些友善。
在實際開發中,我個人認為運算符重載的意義不大。我是程式員,如果更願意用代碼判斷Girl1和Girl2的m_name成員是否相等,重載運算符會模糊程式員的意圖。
很久很久以前,剛學習運算符重載的時候,可以把各種運算符重載成奇奇怪怪的功能,覺得很好玩。後來就不玩了,十多年來,我再也沒有用過它,也想不到用它的理由。
運算符重載還有很多其它的知識,我就不介紹了,意義不大。