在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!當乙個類從父類繼承了乙個成員時,也就繼承了它的執行 如果成員時虛擬的,我們可以...