標準C++(4)繼承
阿新 • • 發佈:2018-08-15
特性 class a 調用 同名 clas 父類 基類 pre 類中訪問
一、繼承的作用
若A類繼承了B類,可以使A類獲得B類中的部分成員變量和成員函數,這能使程序員在已有類的基礎上重新定義新的類。繼承是類的重要特性,當A類繼承了B類,我們稱A類為派生類或子類,B類為基類或父類。
派生類能夠從基類中得到的成員由基類中成員的訪問權限有關。關於成員的訪問權限,以下將會繼續討論。
二、繼承中的訪問權限
【例】繼承的語法
class B { public : int num1; protected: int num2; private: int num3; } class A : public B { }
上面的例子裏,A類繼承了B類,
A類能夠得到 B類中訪問權限是 protected 和 public 的成員。
而B類中 private 的成員A類是無法繼承的。
具體的訪問權限可以看下面的表格:
三、三種繼承方式
派生類不同的繼承方式會影響從基類繼承來的成員的訪問屬性,不同的繼承方式不會影響能從基類繼承的成員,也就是說基類裏私有的(private )成員仍然無法繼承
class A : 繼承方式 B
{
}
三種繼承方式
public:不改變從繼承來的成員的訪問屬性。
protected :繼承來的成員訪問屬性設置為 protected
private:繼承來的成員訪問屬性設置為 private
四、繼承的構造、析構、拷貝
1、在繼承時先調用父類的構造函數,再調用子類的構造函數
2、在繼承中先調用子類的析構,在調用父類的析構
3、在調用拷貝構造時會先調用父類的拷貝構造,再調用子類的拷貝構造
4、在C++中繼承可以有多個父類,在構造時會按繼承表的順序調用父類的構造函數。
5、在析構時子類會先調用自己的析構函數,然後再按照繼承表的逆序調用父類的析構函數
五、繼承中要註意的問題
1、繼承雖然可以獲取父類中的成員,但子類中如果有同名成員,那麽子類的成員將會隱藏掉繼承來的成員
2、父子類中的函數不可以形成重載,實際上父子類之間並不在同一作用域,因此也不會形成重載
標準C++(4)繼承