第一個劃線的這句話的意思是
這樣,預設的初始化操作都放在預設構造函數里就行了,相當於先執行Class1(),再執行Class1(1)這樣的。這樣做可以減少程式碼冗餘。
前兩個問號是運算子過載的特殊語法,就是編輯自定義的運算子操作,第一個是==運算子的過載,在這裡將寫上判斷兩個Card是否相等的自定義邏輯。第二個是!=運算子的過載,在這裡將協商判斷兩個Card是否不相等的自定義邏輯。你可以把 operator ==作為一個整體,當做方法名就可以了。
第三個問號是對Object中的Equals方法的過載,這個方法用於判斷兩個Card是否相同,this就是當前的物件,比如
在這裡的Equals呼叫中,card就是this。
這裡使用了運算子過載裡面的方法。
而最後一個劃線的,其實是因為過載了Equals之後,需要過載一下GetHashCode,這個方法是獲取Card的一個標識的,就像Hash碼一樣,所以是這樣的,這個13的意思,其實是因為撲克有4種花色,每種花色有13張,所以用花色程式碼*13再加上卡片型別就可以唯一標識一張撲克了。
第一個劃線的這句話的意思是
這樣,預設的初始化操作都放在預設構造函數里就行了,相當於先執行Class1(),再執行Class1(1)這樣的。這樣做可以減少程式碼冗餘。
前兩個問號是運算子過載的特殊語法,就是編輯自定義的運算子操作,第一個是==運算子的過載,在這裡將寫上判斷兩個Card是否相等的自定義邏輯。第二個是!=運算子的過載,在這裡將協商判斷兩個Card是否不相等的自定義邏輯。你可以把 operator ==作為一個整體,當做方法名就可以了。
第三個問號是對Object中的Equals方法的過載,這個方法用於判斷兩個Card是否相同,this就是當前的物件,比如
在這裡的Equals呼叫中,card就是this。
這裡使用了運算子過載裡面的方法。
而最後一個劃線的,其實是因為過載了Equals之後,需要過載一下GetHashCode,這個方法是獲取Card的一個標識的,就像Hash碼一樣,所以是這樣的,這個13的意思,其實是因為撲克有4種花色,每種花色有13張,所以用花色程式碼*13再加上卡片型別就可以唯一標識一張撲克了。