1. 程式人生 > >標準C++(4)繼承

標準C++(4)繼承

特性 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)繼承