C 過載 重寫 重定義的區別

2021-09-11 04:20:58 字數 787 閱讀 8563

本文是學習過載、重寫、重定義的學習筆記。

過載(overload):類中同名函式,通過引數不同,實現不同的功,返回值不同不能作為過載區別。

重寫(override):子類重寫父類的虛函式,父類函式必須是virtual說明的,不能是static的,是c++實現多型的方式,讓父類能呼叫子類的方法。

重定義(redefining):子類重定義父類的同名非虛函式,引數可以同父類不同。一旦重定義,父類的同名函式將失效。

#include 

using namespace std;

classa;

classb:

public

a//虛函式,同時是對父類的fun的重寫(override)

virtual string fun

(string ch)

//虛函式,有自己的定義,同時是對本類fun()的過載(overload)};

classc:

public

b//對父類的fun的重寫(override)

int fun

(int i)

//對本類fun()的過載(overload)};

classd:

public

c//對父類fun(int)的重定義(redefining)};

過載 重寫 重定義區別

過載 函式名相同,函式的引數個數 引數型別或引數順序三者中必須至少有一種不同。函式返回值的型別可以相同,也可以不相同。發生在乙個類內部。重定義 也叫做隱藏,子類重新定義父類中有相同名稱的非虛函式 引數列表可以不同 指派生類的函式遮蔽了與其同名的基類函式。可以理解成發生在繼承中的過載。重寫 也叫做覆蓋...

過載 重寫 重定義的區別

1.什麼是過載 乙個類中,函式名相同,函式的形參的型別或者數目不一樣 2.原理 c 底層函式的命名會將形參型別加上,所以底層不會把僅函式名相同的函式認為是同乙個。所以c語言和c 混編要加 extend 重寫也叫覆蓋 子類重新定義父類中有相同名稱和引數的虛函式。重寫需要注意 1 被重寫的函式不能是st...

C 過載重寫重定義

includeusing namespace std 函式過載 必須在同乙個類中進行 子類無法過載父類的函式,父類同名函式將被名稱覆蓋 過載是在編譯期間根據引數型別和個數決定函式呼叫 函式重寫 必須發生於父類和子類之間 並且父類和子類中的函式必須有完全相同的原型 使用virtual宣告之後能夠產生多...