過載:
只有在同一類定義中的同名成員函式才存在過載關係,主要特點是函式的引數型別和數目有所不同,但不能出現函式引數的個數和型別均相同,僅僅依靠返回值型別不同來區分的函式,這和普通函式的過載是完全一致的。另外,過載和成員函式是否是虛函式無關
覆蓋:
在派生類中覆蓋基類中的同名函式,要求兩個函式的引數個數、引數型別、返回型別都相同,且基類函式必須是虛函式。
隱藏:
派生類中的函式遮蔽了基類中的同名函式,
2個函式引數相同,但基類函式不是虛函式(
和覆蓋的區別在於基類函式是否是虛函式)。2個函式引數不同,無論基類函式是否是虛函式,基類函式都會被遮蔽(
和過載的區別在於兩個函式不在同一類中)。
#include using namespace std;
class a
virtual void h(int i = 1, int j = 2)
~a()
};class b :public a
void f()
void h()
void h(int i, int j = 3)//當基類中的虛函式有預設形參時,派生類中重定義基類中的虛函式的版本必須有相同數量的形參,
//形參可以有預設值,也可以沒有。如果形參數量不一樣多則是對虛函式的過載。
~b()
};int main()
c 過載 覆蓋 隱藏
成員函式的過載 覆蓋與隱藏 成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚 概念,否則錯誤將防不勝防。8.2.1 過載與覆蓋 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函...
c 過載 覆蓋 隱藏
成員函式的過載 覆蓋與隱藏 成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚 概念,否則錯誤將防不勝防。8.2.1 過載與覆蓋 成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函...
c 過載 覆蓋 隱藏
成員函式的過載 覆蓋與隱藏 成員函式的過載 覆蓋 override 與隱藏很容易混淆,c 程式設計師必須要搞清楚概念,否則錯誤將防不勝防。成員函式被過載的特徵 1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。覆蓋是指派生類函式覆蓋基類函式,特徵是 1...