過載等於號 運算子過載

2021-10-14 17:21:23 字數 999 閱讀 8764

這節講c#中的運算子過載。

方法有過載,運算子也有過載,設想一下,我們用加號計算int型別的資料,返回的也是int型別,這很正常,因為在數學中加號就是用來計算數字的。但是當我們用加號計算兩個string型別的資料時,給我們返回的則是兩個string資料連線在一起,難道加號應用於不同的場景,編譯器就會自動做出相應的變化嗎?當然不是,這其中就用到了運算子過載。

string型別就過載了加號運算子,當然string不止過載了加號,等於號(==)它也過載了,此處對此不作細究。當編譯器遇到兩個string相加,就會執行string過載的加號方法。下面用乙個模擬string類來演示一下運算子過載:

classmystring

//過載用於mystring類的加號運算子

public static string operator+(mystring m1,mystring m2)

}

運算子過載寫法很簡單,必須是靜態的,方法名是operator關鍵字後接上要過載的符號。該方法的兩個引數就是該符號在運算時的左右兩個值,此處要明確:既然有兩個引數,也就是說當加號執行雙目運算的時候,才會執行該過載,當有乙個引數時,那就是單目運算才會執行過載方法。

下面我修改一下**,為加號運算子設定兩個過載,乙個是雙目,乙個是單目:

class mystring

//過載用於mystring類的加號運算子

public static string operator+(mystring m1,mystring m2)

public static string operator+(mystring m1)

}

在主方法中呼叫,檢視結果:

static void main(string args)

雙目時,執行連線,單目時執行複製,結果也很明了,這就是運算子過載,當我們需要對自定義的類進行運算時,就可以過載將要使用的運算子,以達到我們想要的效果。

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

過載之運算子過載

運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別 運算子過載的宣告方式與方法的宣告方式相同,但operator關鍵字告訴編譯器,它實際上是乙個運算子過載,後面是相關運算子的符號,在本例中就是 返回型別是在使用這個運算子時獲得的型別。在本例中,把兩個向量加起來會得到另...