繼承 虛函式與多型學習總結

2021-08-21 00:26:35 字數 1854 閱讀 4383



基礎知識點

●類之間的關係

繼承:在已有類的基礎上建立新類的過程乙個b

類繼承a

類,或稱從類

a 派生b類

a 稱為基類(父類),類

b 稱為派生類(子類)

●基類和派生類

類繼承關係的語法形式

class

派生類名

: 基類名錶

;基類名錶

構成訪問控制

基類名1

,訪問控制

基類名2,…,

訪問控制

基類名n

訪問控制

表示派生類對基類的繼承方式,使用關鍵字:

public                

公有繼承

private             

私有繼承

protected        

保護繼承

不論種方式繼承基類,派生類都不能直接使用基類的私有成員

派生類的生成過程經歷了三個步驟:

●吸收基類成員(全部吸收

(構造、析構除外

),但不一定可見)

●改造基類成員

●新增派生類新成員

(1)  

吸收基類成員●在

c++的繼承機制中,派生類吸收基類中除建構函式和析構函式之外的全部成員。

(2)  

改造基類成員

●通過在派生類中定義同名成員(包括成員函式和資料成員)來遮蔽(隱藏)在派生類中不起作用的部分基類成員。

(3)  

新增新成員

●僅僅繼承基類的成員是不夠的,需要在派生類中新增新成員,以保證派生類自身特殊屬性和行為的實現

●重名成員

派生類定義了與基類同名的成員,在派生類中訪問同名成員時遮蔽(

hide

)了基類的同名成員

在派生類中使用基類的同名成員,顯式地使用類名限定符:

類名::

成員●派生類中訪問靜態成員

基類定義的靜態成員,將被所有派生類共享(基類和派生類共享基類中的靜態成員)

根據靜態成員自身的訪問特性和派生類的繼承方式,在類層次體系中具有不同的訪問性質

派生類中訪問靜態成員,用以下形式顯式說明:

類名::

成員或通過物件訪問

物件名.

成員●基類的初始化

在建立派生類物件時用指定引數呼叫基類的建構函式來初始化派生類繼承基類的資料

派生類建構函式宣告為

派生類建構函式

( 變元表

) :

基類(

變元表) ,

物件成員1(

變元表)

…物件成員

n (

變元表)

;建構函式執行順序:基類

à物件成員

à派生類

●派生類建構函式和析構函式的定義規則

派生類建構函式和析構函式的使用原則

基類的建構函式和析構函式不能被繼承

如果基類沒有定義建構函式或有無參的建構函式,

派生類也可以不用定義建構函式

如果基類無無參的建構函式,派生類必須定義建構函式

如果派生類的基類也是派生類,則每個派生類只負責直接基類的構造

派生類是否定義析構函式與所屬的基類無關

●派生類建構函式的定義

在c++中,

派生類建構函式的一般格式為

:派生類

::派生類名

(引數總表

):基類名

(參數列

)注意:這是基類有建構函式且含有引數時使用

●派生類析構函式(1

)當派生類中不含物件成員時

虛函式與多型學習總結

1.多型性 指乙個名字,多種語義 或介面相同,多種實現。過載函式是多型性的一種簡單形式。虛函式允許函式呼叫與函式體的聯絡在執行時才進行,稱為動態聯編。2.虛函式 冠以關鍵字 virtual 的成員函式稱為虛函式。基類指標 實現執行時多型的關鍵首先是要說明虛函式,另外,必須用呼叫派生類的不同實現版本。...

c 虛函式與多型學習總結

多型性 乙個名字多種語義,或介面相同多種實現。過載函式是多型性的一種簡單形式 動態聯編 虛函式允許函式呼叫與函式體的聯絡 虛函式宣告格式 virtual 成員函式。虛函式必須是類的成員函式。建構函式不能是虛函式但析構函式可以是虛函式。乙個虛函式在派生類中相同的過載函式都保持虛函式的特性。不能將友元函...

虛函式與多型總結

多型性 polymorphism 是指乙個名字,多種語義 或介面相同,多種實現。過載函式是多型性的一種簡單形式。虛函式允許函式呼叫與函式體的聯絡在執行時才進行,稱為動態聯編。冠以關鍵字 virtual 的成員函式稱為虛函式實現執行時多型的關鍵首先是要說明虛函式,另外,必須用。基類指標呼叫派生類的不同...