+操作符重載具體定義

操作符重載的實現方式有兩種,即通過“友元函數”或者“類成員函數”。

(friend)返回類型 operator 操作符(形參表)

利用友元函數重載二元操作符”-“時,形式參數是兩個,而利用類成員函數時,形式參數卻只有一個。這時因爲類成員函數中存在this指針,這相當於一個參數,所以類成員實現操作符重載需要的形式參數比原來少一個。也正是因爲這個原因,友元函數實現的操作符重載是有限制的,比如:[] ,(),->和 =不能利用友元函數實現運算符的重載。

在實際開發過程中,單目運算符建議重載爲成員函數,而雙目運算符建議重載爲友元函數。通常下雙目運算符重載爲友元函數比重載爲成員函數更方便,但是有時雙目運算符必須重載爲成員函數,例如賦值運算符=。

運算符重載遵循原則:

1)C++中只能對已有的C++運算符進行重載,不允許用戶自己定義新的運算符。

2)C++中絕大部分的運算符可重載,除了成員訪問運算符.,作用域運算符::,長度運算符sizeof以及條件運算符?:。

3)運算符重載後不能改變運算符的操作對象(操作數)的個數。如:"+"是實現兩個操作數的運算符,重載後仍然爲雙目運算符。

4)重載不能改變運算符原有的優先級和原有的結合性。

5)運算符重載不能全部是C++中預定義的基本數據,這樣做的目的是爲了防止用戶修改用於基本類型數據的運算符性質。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章