C 運算子過載

2021-10-08 07:01:55 字數 1321 閱讀 3269

每一次看菜鳥教程都會收穫一些程式設計小技巧,這次get到的知識點是運算子過載,像最基本的運算子+、-、*、/、%這些運算子統統都可以進行過載,這時候你可能要說了,反正程式語言已經實現過這些基本的操作符了,自己過載還有什麼用呢?這個東西用好了可是大大的能提高開發效率哦。下面開始講一下這個技巧的使用場景。

舉乙個常規的例子:

構建square矩形類

public class square

public square(float _width,float _height)

public void displayer()

}

我們就實現兩個square的寬和高都相加的乙個簡單模擬

square s1 = new square(30,30);

square s2 = new square(50,50);

square s3 = new square();

s3.width = s1.width+s2.width;

s3.height = s1.height+s2.height;

s3.displayer();

輸出結果:

寬:80

高:80

上面這種傳統的方法自然是可以實現兩個square相加的功能,但是很顯然,作為愛偷懶的程式設計師,總想著能不能寫的更簡單一點,自然是可以簡單的,那就是運算子過載

運算子過載實現上面的例子:

public class square

public square(float _width,float _height)

public void displayer()

//看這裡,這裡就過載了運算子加號,如果是過載減號就把operator後面的+換為-

public static square operator+(square s1,square s2)

}

實現兩個square的寬和高都相加

square s1 = new square(30,30);

square s2 = new square(50,50);

//再看現在是怎麼加的,頓時簡潔了許多,老順眼了

square s3 = s1+s2;

s3.displayer();

輸出結果:

寬:80

高:80

使用運算子過載的方式同樣實現了兩個square寬和高都相加的運算,而且更加簡潔 過載其他運算子同理上面的操作只不過把operator後面的運算子換成你需要過載的運算子即可

C 運算子過載 過載特殊運算子

賦值運算子用於同類物件間的相互賦值。賦值運算子只能被過載為類的非靜態成員函式,不能過載為友元函式和普通函式。對於使用者自定義的類而言,如果沒有過載賦值運算子,那麼c 編譯器會為該類提供乙個預設的過載賦值運算子成員函式。預設賦值運算子的工作方式是按位對拷,將等到右邊物件的非靜態成員拷貝給等號左邊的物件...

C 運算子過載賦值運算子

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...

C 運算子過載轉換運算子

為什麼需要轉換運算子?大家知道對於內建型別的資料我們可以通過強制轉換符的使用來轉換資料,例如 int 2.1f 自定義類也是型別,那麼自定義類的物件在很多情況下也需要支援此操作,c 提供了轉換運算子過載函式 它使得自定義類物件的強轉換成為可能。轉換運算子的生命方式比較特別,方法如下 operator...