c++類中覆蓋與隱藏一直是乙個容易理解出錯的地方,接下來我就詳細講解一下區別在何處
覆蓋指的是子類覆蓋父類函式(被覆蓋),特徵是:
1.分別位於子類和父類中
2.函式名字與引數都相同
3.父類的函式是虛函式(virtual)
隱藏指的是子類隱藏了父類的函式(還存在),具有以下特徵:
子類的函式與父類的名稱相同,但是引數不同,父類函式被隱藏
子類函式與父類函式的名稱相同,引數也相同,但是父類函式沒有virtual,父類函式被隱藏
classfather
virtual
void
show2()
};class son:public
father
virtual
void
show2()
};int main()
因為show1是非virtual函式,呼叫它的物件型別為靜態型別即父類(靜態聯編),所以呼叫的是父類的物件
但是show2為virtual函式,呼叫它的物件型別為動態型別即指標指向的型別(動態聯編),所以呼叫的是子類的型別
if 子類的函式與父類的名稱相同,但是引數不同
父類函式被隱藏
else if 子類函式與父類函式的名稱相同&&引數也相同&&但是父類函式沒有virtual
父類函式被隱藏
else if 子類函式與父類函式的名稱相同&&引數也相同&&但是父類函式有virtual
父類函式被覆蓋
C 中的覆蓋與隱藏(詳細講解)
c 類中覆蓋與隱藏一直是乙個容易理解出錯的地方,接下來我就詳細講解一下區別在何處 覆蓋指的是子類覆蓋父類函式 被覆蓋 特徵是 1.分別位於子類和父類中 2.函式名字與引數都相同 3.父類的函式是虛函式 virtual 隱藏指的是子類隱藏了父類的函式 還存在 具有以下特徵 子類的函式與父類的名稱相同,...
C 中的覆蓋 過載與隱藏
c 中類本身之間的函式關係與基類和子類之間的函式關係有 覆蓋 過載與隱藏。1 覆蓋 c 中在基類用virtual定義的函式在子類中重新定義,此時稱為覆蓋,即子類對父類函式的覆蓋。2 過載 同乙個類中定義了多個同名但其形參不同的函式,這些同名函式之間為過載。3 隱藏 函式的隱藏有兩種情況。第一,如果派...
C 中的函式過載 覆蓋與隱藏
在c 語言中,函式扮演著很重要的角色,不管面向過程設計,還是基於物件設計 不管是物件導向程式設計,還是基於泛型程式設計,函式都可以隨處而見。在談論c 中的函式過載 覆蓋和隱藏之前,先回顧下函式的基礎知識。函式的宣告包括函式的返回值型別,函式名稱,引數列表 引數的型別 引數的個數 引數的順序 例如,宣...