一.繼承不會改變作用域
•繼承不會改變類成員的作用域,基類的成員永遠都是基類的成員,並不會因為繼承而變成子類的成員
–class human
;–class student : public human
;
一.隱藏不是過載
•因為作用域的不同,分別在子類和基類中定義的同名成員函式(包括靜態成員函式),並不構成過載關係,相反是一種隱藏關係
–class
real
};–class
complex : public
real
};
一.作用域限定
•任何時候,無論在子類的內部還是外部,總可以通過作用域限定操作符「::」,顯式地呼叫那些在基類中定義卻為子類所隱藏的成員函式
–class complex : public real
};–complex c (1, 2);
real r (3);
c.real::add (r);
一.using宣告
•通過using宣告可將在基類中宣告的識別符號引入子類的作用域,就如同在子類中宣告的一樣
•如果所引入的識別符號是基類的成員函式,並且滿足函式過載的條件,那麼子類對基類的隱藏關係可以變為過載關係
–class complex : public real
};
•using宣告只能針對識別符號,而不能針對具體的函式版本
•using宣告可能導致名字衝突,子類版本優先
過載 覆蓋與隱藏
一 總結如下表 函式名均相同 引數返回值型別 virtual有無 類別父類子類間 方法為public 繼承為public同同 必須有override同異 有編譯不通過同 均可無hide異均可 無關hide 同一類內同異 無關編譯不通過異 均可無關 overload 二 幾點說明 override 重...
覆蓋 隱藏與過載
1 相同的範圍 在同乙個類中 2 函式名字相同 3 引數不同 4 virtual關鍵字可有可無。2 覆蓋是指派生類函式覆蓋基類函式,特徵是 1 不同的範圍 分別位於派生類與基類 2 函式名字相同 3 引數相同 4 基類函式必須有virtual關鍵字。例如 class base結果 a為基類指向派生類...
繼承 名字隱藏
include using namespace std peasant繼承自human,human繼承自cre 基類,生物類 class cre 析構函式 cre 成員函式 int gethp void sethp int hp int getdef int getact void move voi...