1. 運算子過載的作用是什麼?
它允許你為類的使用者提供乙個直覺的介面。
運算子過載允許c/c++的運算子在使用者定義型別(類)上擁有乙個使用者定義的意義。過載的運算子是函式呼叫的語法修飾:
2. 算符過載的好處是什麼?
通過過載類上的標準算符,你可以發掘類的使用者的直覺。使得使用者程式所用的語言是面向問題的,而不是面向機器的。
最終目標是降低學習曲線並減少錯誤率
3. 哪些運算子可以用作過載?
幾乎所有的運算子都可用作過載。具體包含:
算術運算子:+,-,*,/,%,++,--;
位操作運算子:&,|,~,^,<<,>>
邏輯運算子:!,&&,||;
比較運算子:<,>,>=,<=,==,!=;
賦值運算子:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=;
其他運算子:,(),->,,(逗號運算子),new,delete,new,delete,->*。
(一) c++不允許使用者自己定義新的運算子,只能對已有的c++運算子進行過載。4. 運算子過載後,優先順序和結合性怎麼辦?(二) c++允許過載的運算子c++中絕大部分的運算子允許過載.
不能過載的運算子只有5個:
(1) 成員訪問運算子.
(2) 作用域運算子∷
(3) 條件運算子?:
(4) 成員指標運算子*
(5) 編譯預處理命令的開始符號#
使用者過載新定義運算子,不改變原運算子的優先順序和結合性。
這就是說,對運算子過載不改變運算子的優先順序和結合性,並且運算子過載後,也不改變運算子的語法結構,
即單目運算子只能過載為單目運算子,雙目運算子只能過載雙目運算子。
5. 編譯程式如何選用哪乙個運算子函式?
運算子過載實際是乙個函式,所以運算子的過載實際上是函式的過載。
編譯程式對運算子過載的選擇,遵循著函式過載的選擇原則。當遇到不很明顯的運算時,編譯程式將去尋找引數相匹配的運算子函式。
6. 過載運算子有哪些限制?
(1) 不可臆造新的運算子。必須把過載運算子限制在c++語言中已有的運算子範圍內的允許過載的運算子之中。
(2) 過載運算子堅持4個「不能改變」。
·不能改變運算子運算元的個數;
·不能改變運算子原有的優先順序;
·不能改變運算子原有的結合性;
·不能改變運算子原有的語法結構。
7. 運算子過載時必須遵循哪些原則?
運算子過載可以使程式更加簡潔,使表示式更加直觀,增加可讀性。但是,運算子過載使用不宜過多,否則會帶來一定的麻煩。
使用過載運算子時應遵循如下原則:
(1) 過載運算子含義必須清楚。
(2) 過載運算子不能有二義性。
C 多型性(3) 運算子過載2
運算子過載的函式一般地採用如下兩種形式 成員函式形式和友元函式形式。這兩種形式都可訪問類中的私有成員。1.過載為類的成員函式 這裡先舉乙個關於給複數運算過載複數的四則運算符的例子。複數由實部和虛部構造,可以定義乙個複數類,然後再在類中過載複數四則運算的運算子。先看以下源 該程式的執行結果為 c1 c...
C 多型性之運算子過載
運算子過載為非成員函式 當c 不存在某些現實中存在的運算 比如複數的加減 或不存在滿足我們要求的運算子時,我們可以對運算子進行過載。過載為成員函式的運算子函式定義形式為 函式型別 operator 運算子 形參 此時引數即形參的個數 原運算元 1 後置 除外,因為這兩個需要額外加乙個int型別的形參...
c 多型性,多型,和過載
多型性分兩個部分 1.靜態多型性 通過過載實現,同名不同參。2.動態多型性 多型,子類覆蓋父類方法,執行時根據指標的型別來決定最終執行的方法。即 虛函式。過載是同名不同參,引數完全一樣順序不同也叫同名不同參。參考 在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的...