C 中過載 重寫 和 覆蓋

2021-08-04 07:44:55 字數 1935 閱讀 5904

一、過載

1、過載示意

2、發生條件

必須發生在乙個類中,函式名相同,引數型別或者個數不同構成過載,與返回型別無關。

如:

public class name  

public int getname(int usercount)

}

二、重寫

1、示意

重寫(override)指子類修改父類中某個函式的函式體,需要重寫的父類中的函式必須是由virtual、abstract 或override標註的,不能重寫非虛方法或靜態方法。

override是在繼承的時候,如果你寫的函式與要繼承的函式函式特徵(函式特徵包括函式名,引數的型別和個數)相同,那麼,加上這個關鍵字,在使用這個子類的這個函式的時候就看不見父類(或超類)的函式了,它被覆蓋掉了。

2、發生條件

必須發生在基類和派生類中,基類函式必須用virtual、abstract 或override修飾,派生類用override修飾。

如:

class program  

public class oc

} public int seta

} //函式b

public virtual int b(int c, int e)

+=", c, e, c + e);

return c + e;

} }

//派生類ob,基類oc

public class ob : oc

} }

三、覆蓋

1、示意

覆蓋指重新定義子類中與父類具有相同函式特徵的的函式體。子類中有一函式和父類中函式的函式特徵相同,但函式體不同,稱為覆蓋。這種覆蓋又稱為隱藏,是隱藏父類中相同的函式,並沒有進行重寫。

2、發生條件

在子類中寫乙個和基類一樣名字(引數不同也算)的非虛函式,會讓基類中的函式被隱藏,編譯後會提示要求使用new關鍵字。

如:

class program  

public class oc

} public int seta

} //函式b

public int b(int c, int e)

+=", c, e, c + e);

return c + e;

} }

//派生類ob,基類oc

public class ob : oc

} }

重寫(override)的兩個函式的函式特徵相同,應用在子類和父類中,會重寫父類函式;過載(overload)的兩個函式的函式名雖然相同,但函式特徵不同,應用在同一類中;覆蓋(new)兩個函式的函式名一定相同,但函式特徵可相同也可不相同,應用在子類和父類中,會隱藏父類同名函式。

c 中 過載,重寫,覆蓋

過載 作用域內,函式名相同,函式引數不同 重寫 父類的virtual成員函式,子類重寫了函式體 覆蓋 1.子類重寫父類函式後,將導致父類裡被重寫函式及其過載函式被覆蓋 2.子類成員函式與父類成員函式,構成過載時,將導致父類裡成員函式被覆蓋 class p virtual p virtual void...

C 中的過載 重寫(覆蓋) 隱藏

一 過載 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual關鍵字可有可無。二 重寫 覆蓋是指派生類函式覆蓋基類函式 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual關鍵字。三 隱藏 隱藏 是指派生類的函式遮蔽了與其...

過載 重寫(覆蓋) 隱藏

過載 同一訪問區 如類中 內被宣告的幾個具有 不同引數列 引數的型別,個數,順序不同 的 同名函式,根據引數列表確定呼叫哪個函式,過載不關心函式返回型別。隱藏 派生類的函式 遮蔽了它繼承的 基類同名函式,注意只要同名函式,不管引數列表是否相同,基類函式都會被隱藏。重寫 覆蓋 派生類中存在 同基類中函...