C 的重寫,過載,重定義

2021-07-01 19:28:08 字數 960 閱讀 7252

1. 重寫 (override):

父類與子類之間的多型性。子類重新定義父類中有相同名稱和引數的虛函式。

1) 被重寫的函式不能是 static 的。必須是 virtual 的,或者是 override 的 ( 即函式在最原始的基類中被宣告為 virtual , c++ 中沒有 override) 。

2) 重寫函式必須有相同的型別,名稱和引數列表 (即相同的函式原型)

3) 重寫函式的訪問修飾符可以不同。儘管 virtual 是 private 的,派生類中重寫改寫為 public,protected 也是可以的 ( 這點與 c# 完全不同 )

2. 過載 (overload):

指函式名相同,但是它的參數列列個數或順序,型別不同。但是不能靠返回型別來判斷。

3. 重定義 (redefining):

子類重新定義父類中有相同名稱的非虛函式 ( 引數列表可以不同 ) 。

重定義後子類呼叫的函式是子類自己的函式,父類的函式會被隱藏。名字隱藏特性。如果想呼叫父類的該同名函式,需要用父類加上作用域來指定呼叫的函式。

過載與覆蓋的區別 (override) pk (overload)

1、方法的覆蓋是子類和父類之間的關係,是垂直關係;方法的過載是同乙個類中方法之間的關   系,是水平關係。

2、覆蓋要求引數列表相同;過載要求引數列表不同。 

3、覆蓋關係中,呼叫那個方法體,是根據物件的型別(物件對應儲存空間型別)來決定;過載關係,是根據呼叫時的實參表與形參表來選擇方法體的。

class base

void f1(string a) ;

class derivea:public base;

class deriveb:public base

;int main()

注意:在 c++ 中若基類中有乙個函式名被過載,在子類中重定義該函式,則基類的所有 版本將被隱藏——即子類只能用子類定義的,基類的不再可用。——名字隱藏特性。

c 重寫重載重定義

include 34 includeusing namespace std 過載 重寫 重定義 重寫發生在兩個類之間 父類和子類 過載必須發生在乙個類之間 引數列表 重寫分為兩類 1.虛函式重寫 前面加上virtual關鍵字,會發生多型2.非虛函式重寫 重定義 class parent virtua...

C 的重寫,過載,重定義

1.重寫 override 父類與子類之間的多型性。子類重新定義父類中有相同名稱和引數的虛函式。1 被重寫的函式不能是 static 的。必須是 virtual 的,或者是 override 的 即函式在最原始的基類中被宣告為 virtual c 中沒有 override 2 重寫函式必須有相同的型...

C 重寫重載重定義區別

過載overload 是函式名相同,引數列表不同 過載只是在類的內部存在。但是不能靠返回型別來判斷。重寫override 也叫做覆蓋。子類重新定義父類中有相同名稱和引數的虛函式。函式特徵相同。但是具體實現不同,主要是在繼承關係中出現的 重寫需要注意 1 被重寫的函式不能是static的。必須是vir...