C 基礎學習筆記07 多型

2021-10-04 02:15:23 字數 1214 閱讀 4666

1.1 多型的基本概念

多型分為兩類:

靜態多型:函式過載和運算子過載

動態多型:派生類和虛函式實現執行時多型

靜態多型與動態多型的區別:

靜態多型的函式位址早繫結-編譯階段確定函式位址

動態多型的函式位址晚繫結-執行階段確定函式位址

class

animal};

class

cat:

public animal

};

總結:

多型滿足條件:

有繼承關係

子類重寫父類中的虛函式

多型使用條件:

父類指標或引用指向子類物件

1.2 純虛函式和抽象類

純虛函式語法:virtual 返回值型別 函式名(引數列表)=0;

當類中有了純虛函式,這個類也稱為抽象類

抽象類特點:

無法例項化物件

子類必須重寫抽象類中的純虛函式,否則也屬於抽象類

class

animal

;

1.3 虛析構和純虛析構

多型使用時,如果子類中有屬性開闢到堆區,那麼父類指標在釋放時無法呼叫到子類的析構**。

解決方式:將父類中的析構函式改為虛析構或純虛析構

虛析構和純虛析構共性:

可以解決父類指標釋放子類物件

都需要有具體的函式實現

虛析構和純虛析構區別:

如果是純虛析構,該類屬於抽象類,無法例項化物件

虛析構語法:

virtual ~類名(){}

純虛析構語法:

virtual ~類名()=0;

class

animal};

//animal::~animal() //純虛析構的實現

class

cat:

public animal

~cat()

}void

species()

string *m_name;

};

總結:

1.虛析構或純虛析構就是用來解決通過父類指標釋放子類物件

2.如果子類中沒有堆區資料,可以不寫虛析構或純虛析構

3.擁有純虛析構函式的類也屬於抽象類

學習筆記 07 C 基礎

學習c 之餘,繼續整理網路上搜尋到的資料 asp.net active server page 活動伺服器頁面 網路服務使用普遍存在的網路協議和資料格式,如http,xml進行通訊。支援這些網路標準的任何系統都支援網路服務。當網路服務和網路使用者依靠標準方式表示資料和命令 表示網路服務契約 算出網路...

C 學習筆記07

友元是一種定義在類外部的普通函式或類,需要在類中宣告,基本格式為friend 函式原型,友元不是成員函式,但它可以訪問類中的私有成員 存在形式 特點運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。過載規則 不能過載的運算子 過載形式 由於現階段時間不夠,這些運算子...

C 學習筆記 物件導向基礎 多型

list 泛型集合 宣告方式 list listname new list 命名空間是 system.collections 陣列與集合之間的相互轉換 裝箱和拆箱 public 在 都可以訪問 private 私有的,只能在類的內部訪問 protected 受保護的,只能在繼承的類中訪問 inter...