C 多型性(2) 運算子過載

2021-05-24 12:30:13 字數 1384 閱讀 3982

1. 運算子過載的作用是什麼?

它允許你為類的使用者提供乙個直覺的介面。

運算子過載允許c/c++的運算子在使用者定義型別(類)上擁有乙個使用者定義的意義。過載的運算子是函式呼叫的語法修飾:

2. 算符過載的好處是什麼?

通過過載類上的標準算符,你可以發掘類的使用者的直覺。使得使用者程式所用的語言是面向問題的,而不是面向機器的。

最終目標是降低學習曲線並減少錯誤率

3. 哪些運算子可以用作過載?

幾乎所有的運算子都可用作過載。具體包含:

算術運算子:+,-,*,/,%,++,--;

位操作運算子:&,|,~,^,<<,>>

邏輯運算子:!,&&,||;

比較運算子:<,>,>=,<=,==,!=;

賦值運算子:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=;

其他運算子:,(),->,,(逗號運算子),new,delete,new,delete,->*。

(一) c++不允許使用者自己定義新的運算子,只能對已有的c++運算子進行過載。

(二) c++允許過載的運算子c++中絕大部分的運算子允許過載.

不能過載的運算子只有5個:

(1) 成員訪問運算子.

(2) 作用域運算子∷

(3) 條件運算子?:

(4) 成員指標運算子*

(5) 編譯預處理命令的開始符號#

4. 運算子過載後,優先順序和結合性怎麼辦?

使用者過載新定義運算子,不改變原運算子的優先順序和結合性。

這就是說,對運算子過載不改變運算子的優先順序和結合性,並且運算子過載後,也不改變運算子的語法結構,

即單目運算子只能過載為單目運算子,雙目運算子只能過載雙目運算子。

5. 編譯程式如何選用哪乙個運算子函式?

運算子過載實際是乙個函式,所以運算子的過載實際上是函式的過載。

編譯程式對運算子過載的選擇,遵循著函式過載的選擇原則。當遇到不很明顯的運算時,編譯程式將去尋找引數相匹配的運算子函式。

6. 過載運算子有哪些限制?

(1) 不可臆造新的運算子。必須把過載運算子限制在c++語言中已有的運算子範圍內的允許過載的運算子之中。

(2) 過載運算子堅持4個「不能改變」。

·不能改變運算子運算元的個數;

·不能改變運算子原有的優先順序;

·不能改變運算子原有的結合性;

·不能改變運算子原有的語法結構。

7. 運算子過載時必須遵循哪些原則?

運算子過載可以使程式更加簡潔,使表示式更加直觀,增加可讀性。但是,運算子過載使用不宜過多,否則會帶來一定的麻煩。

使用過載運算子時應遵循如下原則:

(1) 過載運算子含義必須清楚。

(2) 過載運算子不能有二義性。

C 多型性(3) 運算子過載2

運算子過載的函式一般地採用如下兩種形式 成員函式形式和友元函式形式。這兩種形式都可訪問類中的私有成員。1.過載為類的成員函式 這裡先舉乙個關於給複數運算過載複數的四則運算符的例子。複數由實部和虛部構造,可以定義乙個複數類,然後再在類中過載複數四則運算的運算子。先看以下源 該程式的執行結果為 c1 c...

C 多型性之運算子過載

運算子過載為非成員函式 當c 不存在某些現實中存在的運算 比如複數的加減 或不存在滿足我們要求的運算子時,我們可以對運算子進行過載。過載為成員函式的運算子函式定義形式為 函式型別 operator 運算子 形參 此時引數即形參的個數 原運算元 1 後置 除外,因為這兩個需要額外加乙個int型別的形參...

c 多型性,多型,和過載

多型性分兩個部分 1.靜態多型性 通過過載實現,同名不同參。2.動態多型性 多型,子類覆蓋父類方法,執行時根據指標的型別來決定最終執行的方法。即 虛函式。過載是同名不同參,引數完全一樣順序不同也叫同名不同參。參考 在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的...