3. C++ 重載運算符和重載函數(shù) (上)

1. 簡介

overload可直譯為重載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入?yún)?shù)來區(qū)分這些方法奥秆,然后再調(diào)用時诸衔,會根據(jù)不同的參數(shù)樣式续镇,來選擇合適的方法執(zhí)行拆撼。 --百度百科

在C語言編程中镜悉,要使用結(jié)構(gòu)體函數(shù)指針成員梦碗,必須保證自定義的函數(shù)參數(shù)格式與結(jié)構(gòu)體函數(shù)指針保持一致禽绪,方可將結(jié)構(gòu)體函數(shù)指針成員指向自定義的函數(shù)。C++重載函數(shù)就解決了這種問題洪规,在類中建立多個函數(shù)名一致印屁,但參數(shù)格式不同的函數(shù)。在C++編程中斩例,可以根據(jù)使用類方法時傳參的類型雄人,來判斷使用哪一個類方法。


2. 重載函數(shù)

由上述即可了解重載函數(shù)念赶,即通過傳參的類型與個數(shù)決定調(diào)用的方法础钠。

E.g.

#include <iostream>
using namespace std;
 
class printData
{
   public:
      void print(int i) {
        cout << "整數(shù)為: " << i << endl;
      }
 
      void print(double  f) {
        cout << "浮點數(shù)為: " << f << endl;
      }
 
      void print(char c[]) {
        cout << "字符串為: " << c << endl;
      }
};
 
int main(void)
{
   printData pd;
 
   // 輸出整數(shù)
   pd.print(5);
   // 輸出浮點數(shù)
   pd.print(500.263);
   // 輸出字符串
   char c[] = "Hello C++";
   pd.print(c);
 
   return 0;
}

輸出:

整數(shù)為: 5
浮點數(shù)為: 500.263
字符串為: Hello C++

由以上可以發(fā)現(xiàn)恰力,調(diào)用相同的方法,傳入不同的參數(shù)珍坊,打印出來的格式就各不相同牺勾。這就是重載函數(shù)的魅力所在,靈活的通過傳參來決定調(diào)用的方法阵漏!


3. 運算符重載

運算符重載驻民,就是對已有的運算符賦予多重含義,使同一運算符作用于不同類型的數(shù)據(jù)時產(chǎn)生不同的行為履怯。
簡單的理解就是回还,實現(xiàn)對象之間的運算功能。譬如可以實現(xiàn)兩個對象相加減的功能叹洲,但是相加減后是哪些成員相加減由自己定義柠硕。

形式:
重載的運算符是帶有特殊名稱的函數(shù),函數(shù)名是由關(guān)鍵字 operator 和其后要重載的運算符符號構(gòu)成的运提。與其他函數(shù)一樣蝗柔,重載運算符有一個返回類型和一個參數(shù)列表。

返回值類型  operator  運算符(形參表)
{
……
}

實現(xiàn)一個對象互相運算的實例:
E.g.

#include <iostream>
using namespace std;
class Data
{
    public:
        double real, imag;
        Data(double r = 0.0, double i = 0.0) : real(r), imag(i) { }
        Data operator - (const Data & c);
};
Data operator + (const Data & a, const Data & b)
{
    return Data(a.real + b.real, a.imag + b.imag); //返回一個臨時對象
}
Data Data::operator - (const Data & c)
{
    return Data(real - c.real, imag - c.imag);  //返回一個臨時對象
}
int main()
{
    Data a(4, 4), b(1, 1), c;
    c = a + b;  //等價于 c = operator + (a,b);
    cout << c.real << "," << c.imag << endl;
    cout << (a - b).real << "," << (a - b).imag << endl;  //a-b等價于a.operator - (b)
    return 0;
}

輸出:

5,5
3,3

需要注意的是民泵,一些運算符是不可重載的癣丧,列舉出來:

.:      成員訪問運算符
.*, ->*:成員指針訪問運算符
:::     域運算符
sizeof: 長度運算符
?::     條件運算符
#:      預(yù)處理符號

4.總結(jié)

    1. 本篇主要記錄重載函數(shù)與重載運算符,重載功能是通過傳參來決定調(diào)用的函數(shù)栈妆,是程序更加靈活胁编。
    1. 其中運算符重載比較難以理解,簡單的概括就是實現(xiàn)對象之間的運算鳞尔。本篇就簡單的介紹這些概念嬉橙,后續(xù)會針對運算符重載繼續(xù)學(xué)習(xí)并記錄
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市寥假,隨后出現(xiàn)的幾起案子市框,更是在濱河造成了極大的恐慌,老刑警劉巖糕韧,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拾给,死亡現(xiàn)場離奇詭異,居然都是意外死亡兔沃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門级及,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乒疏,“玉大人,你說我怎么就攤上這事饮焦∨挛猓” “怎么了窍侧?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長转绷。 經(jīng)常有香客問我伟件,道長,這世上最難降的妖魔是什么议经? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任斧账,我火速辦了婚禮,結(jié)果婚禮上煞肾,老公的妹妹穿的比我還像新娘咧织。我一直安慰自己,他們只是感情好籍救,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布习绢。 她就那樣靜靜地躺著,像睡著了一般蝙昙。 火紅的嫁衣襯著肌膚如雪闪萄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天奇颠,我揣著相機與錄音败去,去河邊找鬼。 笑死大刊,一個胖子當(dāng)著我的面吹牛为迈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缺菌,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼葫辐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了伴郁?” 一聲冷哼從身側(cè)響起耿战,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焊傅,沒想到半個月后剂陡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡狐胎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年鸭栖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片握巢。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡晕鹊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溅话,我是刑警寧澤晓锻,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站飞几,受9級特大地震影響砚哆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屑墨,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一躁锁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绪钥,春花似錦灿里、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寸潦,卻和暖如春色鸳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背见转。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工命雀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斩箫。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓吏砂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乘客。 傳聞我的和親對象是個殘疾皇子狐血,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容