操作符過載

2021-05-25 16:36:39 字數 1456 閱讀 3108

1. 操作符是靜態方法,返回值表示操作結果,引數是運算元。

2. 操作符過載需要在過載的操作符前加上operator關鍵字。

3. 最好少用操作符過載,只有在意義明晰而且與內建類的操作一致時才適合使用,以免造成混亂。

以建立的分數類(fraction)中的「+」為例,該分數類中有兩個int型的私有屬性:分子(numerator)、分母(denominator)。

public static fraction operator +(fraction lhs, fraction rhs)

int down = extensionmath.commultiple(lhs.denominator, rhs.denominator);

int up = lhs.numerator * down / lhs.denominator + rhs.numerator * down / rhs.denominator;

return new fraction(up, down);

4. c#要求有些邏輯操作符的過載必須成對出現,例如等於操作符(==)和不等於操作符(!=),大於操作符(>)和小於操作符(<),大於等於操作符(>=)和小於等於操作符(<=)等。

public static bool operator ==(fraction lhs, fraction rhs)

fraction reduce = lhs - rhs;

if (reduce.numerator == 0)

return true;

else

return false;

public static bool operator !=(fraction lhs, fraction rhs)

return !(lhs == rhs);

5. c#要求過載某些操作符時,最好過載(override)對應的方法,否則編譯時會有警告提示。例如過載等於操作符(==)時最好過載equal() 方法。

public override bool equals(object obj)

if (!(obj is fraction))

return false;

return this == (fraction)obj;

1. implicit用於顯示轉換,即轉換過程中沒有資訊丟失,且轉換必定成功;explicit用於隱式轉換。過載時 implicit 和 explicit 必須用到乙個。

2. 過載格式為 顯式/隱式轉換關鍵字 + operator關鍵字 + 轉換目標類 + **換起始類 物件)。

public static implicit operator fraction(int num)

return new fraction(num, 1);

public static explicit operator int(fraction num)

return (int)(num.numerator / num.denominator);

操作符過載

ifndef vertex h define vertex h class vertex vertex float px float py float pz vertex operator const vertex p vertex operator const vertex p void oper...

過載操作符

1.過載操作符1.1 限制過載操作符具有以下限制 1 只有c 預定義的操作符集中的操作符才可以被過載 2 對於內建型別的操作符,它的預定義不能被改變,應不能為內建型別過載操作符,如,不能改變int型的操作符 的含義 3 也不能為內建的資料型別定義其它的操作符 4 只能過載類型別或列舉型別的操作符 5...

過載操作符

過載操作符是個好青年,但是要吐槽的是 我們時常為了過載操作符編寫許多重複的 這是枯燥的,但是也是必須的。你過載的越多,你的類的彈性就越大。但是,你也不能為所欲為。玩遊戲總是遵守相應的規則,寫過載操作符亦是如此 以下是要遵守的遊戲規則 一元操作符可以是不帶引數的成員函式或帶乙個引數的非成員函式。二元操...