1.運算子就是「+」、「>>」等符號,對運算子過載實質就是對函式的過載,這樣運算子就能在原有基礎上增加新功能,不能自己定義新運算子,只能對已有運算子過載,過載運算子後不能改變運算子本身的特性,比如優先順序,運算數個數等;
2.運算子過載格式:
函式型別 operator 運算子名稱(形參表)
e.g.
complex operator +(complex &c1,complex &c2)
operator是關鍵字,函式名由operator和運算子共同組成,如」operator +」。
3.不能過載的5個運算子:「.」、「*」、「::」、「sizeof」、「?:」。
4.對運算子過載的函式有兩種方式:類成員函式、類友元函式。
類成員函式:complex operator +(complex &c1)
這樣就可以直接c1+c2了,相當於是c1.operator+(c2),operator+就是c1的成員函式,因為可以通過this指標訪問類的資料成員,所以可以少寫乙個函式引數,第乙個引數必須為本類物件。
類友元函式:complex operator +(complex &c1,complex &c2)
這樣c1+c2相當於是operator+(c1,c2)
如果不用友元,則過載的運算子函式無權訪問類的私有成員,所以要用友元。
因為友元會破壞類的封裝,所以盡量將運算子函式作為類的成員。一般來說,雙目運算子為友元,單目和復合運算子為成員函式。
5.資料型別顯式轉換:
c風格:(int)12.3=12
c++風格:int(12.3)=12
6.建構函式轉換資料型別,過載建構函式即可。
7.型別轉換函式:
格式:operator 返回型別()//一般是在類內部寫的,
e.g.
class a
operator int()
};int main()
作用:將自定義資料型別轉換為標準資料型別。
C 型別轉換運算子過載
在c 中有乙個特殊的運算子過載方法 型別轉換運算子過載,形如 operator type code class cdemo operator int private int x int y code int tmain int argc,tchar argv 執行結果 即 x的值,int 對demo...
c 過載型別轉換運算子
型別轉換運算子 型別轉換運算子是類的一種特殊成員函式,負責將乙個類型別的值轉換成其他型別 乙個型別轉換函式必須是類的成員函式,不能有返回型別,形參列表也必須為空,通常是const的。operator type const class smallint 轉換源,為int型。可將算術型別轉換成small...
型別轉換 運算子過載
c 中沒有返回型別的函式有3個,建構函式 析構函式 型別轉換函式。operator const char const 如果是過載 的話,那應該寫成 const char operator const而上面所寫的那樣,而且即使是這樣寫那也不正確的,因為運算子過載中有幾個運算子的返回值是有格式的 約定 ...