(
1)過載要求:函式名相同,引數不同(個數、型別)、常函式也可以作為過載判斷。注意返回值不是過載的判斷標準。 (
2)重寫(即覆蓋)要求:要求基類函式為虛函式,且基類函式和派生類函式名、引數等相同。 (
3)隱藏(即重定義)要求:子類重新定義父類中有相同名稱的非虛函式(引數列表可以不同)。 (
4)重寫和隱藏都是發生在基類和子類中。
#include "stdafx.h"
#include /*-------------------------
// 過載
-------------------------*/
class overload;
~overload(){};
void displaynumtype(int)
void displaynumtype(short)
void displaynumtype(double)
void displaynumtype(int, double)
void displaynumtype(double, int)
void displaynumtype(int) const
};int main()
結果顯示:
number is int
number is short
number is double
number1 is int, number2 is double
number1 is double, number2 is int
number is int and function is const
請按任意鍵繼續. . .
#include "stdafx.h"
#include /*-------------------------
// 覆蓋
-------------------------*/
class a
};class b : public a
void display1()
};int main()
結果顯示:
this is derived
this is derived
this is derived
請按任意鍵繼續. . .
至於為什麼a->display1() 會出現錯誤?
因為display1()不是a的成員。
從上面的**可以看出,覆蓋(重寫)主要是虛函式多型時使用,而過載也是多型的一種,兩者不一樣!
#include "stdafx.h"
#include /*-------------------------
// 隱藏
-------------------------*/
class a
};class b : public a
};int main()
結果顯示:
this is base
this is derived
請按任意鍵繼續. . .
備註:如果將b中的display注釋掉,結果顯示為:
this is base
this is derived
c 過載,重寫 覆蓋,重定義 隱藏
關於c 的過載,重寫 又稱覆蓋 重定義 又稱隱藏 來做乙個小小的總結。過載最主要是指在同一作用域下的函式名相同,引數不同的函式過載,其強調同一作用域。同名同參,不同返回值不能作為過載,編譯器會提示函式重複定義。重寫和重定義主要在體現在繼承行為中,子類對父類函式的操作。重寫是虛函式的正確用法,指子類對...
C 過載 重寫 覆蓋 重定義 隱藏
我們經常會被過載 重寫 重定義經常被我搞混,今天就專門總結區別一下。1.過載概念 過載指的都是函式過載,函式過載就是函式的一種特殊情況,c 允許在同一作用域中宣告幾個功能類似的同名函式,這些同名函式的形参列 表 引數個數 型別 順序 必須不同,常用來處理實現功能類似資料型別不同的問題。2.構成過載的...
函式過載 重寫(覆蓋)和重定義(隱藏)
過載 overload 在c 程式中,可以將語義 功能相似的幾個函式用同乙個名字表示,但是函式引數不同,即構成函式過載。1 相同的範圍 在同乙個類或域中 2 函式名稱相同 3 函式引數不同 引數型別 引數個數 引數順序 4 不考慮返回型別 5 不考慮virtual關鍵字 重寫 又叫覆蓋,overri...