本文是學習過載、重寫、重定義的學習筆記。
過載(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宣告之後能夠產生多...