在C語言中,運算符只能用於基本數據類型,例如,能夠用==判斷兩個整數是否相等,但不能用於判斷字符串是否相等,不能用於判斷結構體,也不能用於判斷類。程序員
在C++中,運算符的重載就是把運算符的符號賦予新的含義,若是類重載了 \== 運算符,那麼就能夠用\== 判斷兩個類是否相等。ide
operator是C++的一個關鍵字,它和運算符一塊兒使用,表示一個運算符重載函數,在理解時可將operator和運算符(如operator==)視爲類的一個成員函數名。函數
示例(book214.cpp)學習
/* * 程序名:book214.cpp,此程序用於演示C++運算符重載。 * 做者:C語言技術網(www.freecplus.net) 日期:20190525 */ #include <stdio.h> #include <string.h> class CGirl // 定義類 { public: char m_name[50]; // 姓名 char m_sc[30]; // 身材,火辣;普通;飛機場。 bool operator==(const CGirl &Girl) // 重載==運算符 }; int main() { CGirl Girl1,Girl2; strcpy(Girl1.m_name,"西施"); strcpy(Girl2.m_name,"東施"); if (Girl1 == Girl2) printf("Girl1和Girl2是同一我的。\n"); else printf("Girl1和Girl2不是同一我的。\n"); } bool CGirl::operator==(const CGirl &Girl) // 重載==運算符 { // 若是兩個類的姓名相同,就相等 if (strcmp(m_name,Girl.m_name)== 0) return true; return false; }
CGirl類重載了\==運算符,定義了operator\==函數,用於判斷兩個對象是否相等,其實是判斷兩個對象的成員變量m_name是否相同,若是相同,對象就相等。.net
運行效果code
經過上述結果可以知道,由於操做符重載函數operator\==是CGirl類的一個成員函數,因此對象Girl一、Girl2均可以調用該函數。其中的 if (Gril1 \==Gril2) 語句,至關於對象Gril1調用函數operator\==,把對象Girl2做爲一個參數傳遞給該函數,從而實現了兩個對象的比較。對象
咱們把語句改成if (Gril1 != Gril2) ,會如何?編譯以下:blog
編譯沒法經過,由於CGirl類並無重載!=運算符。圖片
下一章節中將學習C++的string類,它重載了+、=、==、!=等運算符,對程序員來講,確實感受有些方便。開發
在實際開發中,重載運算符有可能會模糊程序員的意圖,若是要判斷Girl1和Girl2的m_name成員是否相等,我更願意用strcmp函數。
好久好久之前,學習了運算符重載的時候,能夠把各類運算符重載成奇奇怪怪的功能,以爲很好玩,後來就不玩了,感受沒什麼意思。
運算符重載還有不少其它的知識,我就不介紹了。
對CGirl重載!=操做符試試。
C語言技術網原創文章,轉載請說明文章的來源、做者和原文的連接。
來源:C語言技術網(www.freecplus.net)
做者:碼農有道
若是這篇文章對您有幫助,請點贊支持,或在您的博客中轉發個人文章,謝謝!!!若是文章有錯別字,或者內容有錯誤,或其餘的建議和意見,請您留言指正,很是感謝!!!