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...