C 中基類成員函式的隱藏機制

2021-10-25 12:20:05 字數 508 閱讀 4202

在c++類的繼承中,宣告在內層作用域(派生類)的函式並不會過載宣告在外層作用域(基類)的函式。因此,定義在派生類中的函式也不會過載基類中的成員。如果派生類和基類中的某個成員重名,則派生類將在其作用域內隱藏該基類成員即使派生類成員列表和基類成員列表不一致,基類成員也依然被隱藏。

struct base 

;struct child : base

;// 呼叫

base b; child c;

b.f1()

;// 正確:訪問base中的成員

c.f1(10

);// 正確:訪問child中的成員

c.f1()

;// 錯誤:引數列表為空的f1被隱藏了,無法訪問

c.base::f1(

);// 正確:訪問base中的f1

被掩藏掉的成員無法直接訪問,可以通過指定作用域進行訪問

C 繼承機制 訪問與隱藏基類成員

1 訪問基類成員 通過base 關鍵字訪問基類的成員 呼叫基類上已被其他方法重寫的方法。指定建立派生類例項時應呼叫的基類建構函式。基類訪問只能在建構函式 例項方法或例項屬性訪問器中進行。從靜態方法中使用 base 關鍵字是錯誤的。示例 下面程式中基類 person 和派生類 employee 都有乙...

C 繼承 6 隱藏基類中的所有過載函式

目錄 1.引數列表相同時的隱藏 2.引數列表不同時的隱藏 c 中,如果子類重新定義了基類中的成員函式,則基類中所有相同函式名的函式都會被隱藏起來。例如,下面的程式會編譯失敗。因為derived重定義了基類方法fun 這使得基類的fun int i 被隱藏。所以子類物件無法呼叫此函式。includeu...

C 類中隱藏基類方法和Partial

時間 2014 11 14 11 50 03 薑糖水 原文主題c 今天對於.net開發人員來說最開心的事情莫過於微軟搞開源了,這覺得是給搞.net開發的長臉。雖然我是乙個初學者,這無疑給我極大的學習動力。fighting!當乙個類從父類繼承了乙個成員時,也就繼承了它的執行 如果成員時虛擬的,我們可以...