c++ - 为什么叫做操作符重载?
PHPz
PHPz 2017-04-17 11:44:05
0
5
644

如题,按重载的定义,应该具有相同的函数名才行啊,为什么是叫操作符重载,而不是操作符重写?

PHPz
PHPz

学习是最好的投资!

全部回覆(5)
PHPzhong

先來先明確一下重載和重寫的差別:

1.重載(overload)一般是指同一個作用域裡,兩個不同的函數用了同一個名字,但是它們必須具有不同的參數列表,例如參數類型不同,或者參個數不同。

2.重寫(override)是指在子類別中重新實作基底類別中的虛擬函數(記住,一定要是虛擬函數!如果子類別中重現實現的是基底類別中的非虛函數,就應該叫做「隱藏(hide)」了!

現在來對號入座吧:假設你重載操作符“+”,其實你重載的函數名就是“+”,與原有(內建)的“+”具有相同的函數名稱。但是你重載的「+」和原有的「+」應該要有不同的參數清單(否則你就沒必要重載了)。事實上,c++要求在重載運算子時,必須確保至少有一個參數是你的自訂的類別類型,如果你這麼重載

int operator+(int a, int b);

編譯器就會報錯。你會發現,整個過程中好像跟虛函數沒什麼關係。所以,運算子重載只能叫“重載”,不能叫“重寫”。

小葫芦

你把操作符看成函數,其實它就是一種函數,個人見解

大家讲道理

操作符重載整體就是一個概念,為什麼你一定要拆開來看?

迷茫

對應原文:

override:函數覆寫(重寫太容易誤解了)
overload:重載
operator overload:運算子重載

不叫覆寫的原因,是因為這個特質跟繼承關係無關。而重載更偏重其擴展性質。

阿神

類似函數重載啊。 。 。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板