類繼承與派生

2021-08-20 09:47:59 字數 2931 閱讀 5449

繼承: 

1.在已有類的基礎上新增功能。

2.新增資料。在派生類中新增指定字元。

3.修改類方法的行為。

派生:classa

class

b:public a

一、說明:

a是乙個公有基類(公有派生)。則a.

a的公有成員

成為b

的公有成員

b.a的

私有部分成為b

的一部分,

但只能通過

a的公有和保護方法訪問。

ps:b

需要自己的建構函式。

二、訪問許可權(子類不能直接訪問父類私有成員)

a.初始化成員列表b::

b(intb1,int a1, int a2

):a(a1,a2)

將a1,a2的值傳遞個a的建構函式,建立a物件,然後,建立b物件。b.

不使用初始化成員列表b::

b(intb1,int a1, int a2

)//:a()

會自動呼叫預設a();c:

引數為父類引用b::

b(intb1,const a & a

):a(a)或b

::b(int

b1,const a & a

):a(a)

,m_b1(b1)

呼叫a的拷貝建構函式。

ps:析構:子類析構

-》基類析構

建立子類物件:基類構造-》子類構造

三、指標轉換

基類指標

可以指向

子類物件;

基類引用

可以引用

子類。

但,只能呼叫基類方法。

e.g:

a*a;

a= new b();//

即b物件可以賦值給a指標

a.fun_a();  //僅能調a類方法

意義:1.

引數為基類指標或引用

void

test(const a &a);

呼叫:aa

;b b;

test(a);//

基類方法

或test

(b);//

可傳入b類引用

2.

子類物件

賦值給基類物件aa;

b b;

a = b;//

子類物件可以賦給基類物件

隱式呼叫了a &operator=(consta &)const;

四、多型公有繼承

多型:具有多種形態,及同乙個方法的行為隨上下文而異。

實現方式:

子類重新定義基類方法。

使用虛方法。

1.

使用虛函式

class

aclass

b:public a

a.根據物件型別決定呼叫哪個方法(物件呼叫方法)aa;

b b;

a.fun_a();//

調a類方法

b.fun_a();//

調b類方法

b.根據引用或指標型別決定呼叫哪個(指標或引用呼叫方法)(1

使用virtual

a a;

bb;a&a_test =a;

a&b_test =b;

a_test.fun_a

(); //調a

b_test.fun_a

();  //調b

二者呼叫的不同方法。根據物件型別決定。(2

不使用virtual

a_test.fun_a

(); //調a

b_test.fun_a

();  //調a

只根據指標或引用型別決定。

ps:

基類宣告虛方法後,子類自動就是虛方法,也可以使用

virtual

在子類中標記。

c

.宣告虛析構函式(慣例)

確保釋放子類物件時,釋放順序是:子類

-》基類。

e.g:

a* p;

p = new b();

delete p;

若a的析構函式不是虛函式,則只呼叫a的析構函式,那麼b類物件未釋放。

a的析構為虛函式,那麼

b的析構也為虛函式,則會呼叫

b的析構函式,就是先釋放

b物件,再釋放a。

d

.演示虛函式

a*a_array[4] = ;

//建立基類指標陣列,同時可以新增基類和子類的物件的指標。即可使用乙個陣列便是多種型別的物件,即多型性。

五、子類呼叫基類方法::定義b

類方法:

voidb::fun_a()

若不使用作用域解析運算子,則會認為是

b類的函式,出現遞迴。

類的繼承與派生

類的繼承與派生 一 派生類生成過程 1 吸收基類成員。2 改造基類成員。3 擴充基類成員。在類的派生中,建構函式和析構函式不能被派生。派生類繼承了基類的全部資料成員和除了構造,析構之外的全部函式 成員。二 類的繼承方式有共有繼承 保護繼承 私有繼承三種 1 公有繼承。基類的公有和保護成員的訪問屬性在...

類的繼承與派生

儘管在派生類物件中含有從基類繼承而來的成員,但派生類並不能直接初始化這些成員,必須使用基類的建構函式來初始化它的基類成員。初始化順序 先初始化基類成員,在初始化自己新增成員。派生類可以訪問基類的公有成員和受保護成員。類的作用域分辨符。我們可以將基類的指標或引用繫結到派生類物件上,但反過來不行,不存在...

類的繼承與派生

乙個新類從已有的類獲得其已有特性,稱為類的繼承 從已有的類 父類 基類 產生乙個新的子類 派生類 稱為類的派生。因此,類的繼承與派生是同樣乙個過程的兩個方向的描述。單繼承 乙個派生類只從乙個基類派生 單繼承關係形成的層次是乙個樹形結構。箭頭由派生類指向基類。某乙個事物是由其他幾種事物構成的,那麼其他...