1. 程式人生 > >C++ 類的派生和繼承

C++ 類的派生和繼承

1.outline

已有類派生出新的類,新的類繼承了其原有類的特徵

1). 新增新的資料
2).新增新的功能
3).修改類的方法
···
從一個類派生出另一個類時,原始類稱為基類,繼承類稱為派生類。
···
##2.基本操作

class a:public b
{
    ....
}

指 出 a類的基類是b類。上述特殊的宣告頭表明b是個公有基類,這被稱為公有派生。派生類物件包含基類物件。使用公有派生,基類的公有成員將成為派生類的公有成員;基類的私有部分也將成為派生類的一部分,但只能通過基類的公有和保護方法訪問。
上述程式碼做了兩件事:

1).派生類物件儲存了基類的資料成員( 派生類繼承了基類的實現);
2). 派生類物件可以使用基類的方法(派生類繼承了基類的介面)。

派生類a需要做的:

1). 派生類需要自己的建構函式。
2). 派生類可以根據需要新增額外的資料成員和成員函式.

2.許可權

a.派生類不能直接訪問基類的私有成員,必須通過基類的方法

class::a(unsigned int x, unsigned int y):b(x,y)
{
    .....
}


中 :b(x, y) 是 成 員 初 始 化 列 表 。 它 是 可 執 行 的 代 碼 , 呼叫b的建構函式。例如,假設程式包含如下宣告:

class::aa(1, 2);

則 a構造 函式將把實參1,2 給 形 參 x,y, 然後將這些引數作 為 實 參 傳 遞 給 b構 造 函 數 ,後 者 將 創 建 一 個 嵌 套 b對 象 ,並將資料1和 2儲存在該物件中。
如果,只是宣告:

class::a(x,y)
{
    .....
}

那麼只會呼叫b基類的預設的建構函式。