中雙目運算子 運算子過載

2021-10-16 07:24:34 字數 1048 閱讀 3388

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

本節到此結束...

過載雙目運算子

include include using namespace std class string 定義預設建構函式 string char str 建構函式過載 friend bool operator string string1,string string2 friend bool operat...

過載雙目運算子和過載單目運算子

new 和delete是單目運算子。strcmp函式將兩個字串進行比較,相等返回0 小於返回負數 大於返回正數。strcpy的用法 函式原型 char strcpy char est.const char src 功能是從src位址開始且含有null結束符的字串複製到以dest位址開始的字串中,並返...

雙目運算子的過載

includeclass ccomplex void print ccomplex operator ccomplex c 過載運算子 ccomplex operator double r 過載運算子 private double realpart 複數的實部 double imagepart 複數...