C++多態等知識點
阿新 • • 發佈:2018-03-30
構造函數 定義 重載 構造 OS 參數 能說 派生 格式
分清虛函數和純虛函數的區別:
(1).虛函數是函數前加關鍵字virtual,一般定義格式為:
virtual 類型 函數名 (參數表)
{
函數體
}
(2).純虛函數的生命格式為:
virtual 類型 函數名 (參數表)=0;
即沒有函數體。
(3).帶有純虛函數的類為抽象類:
例:
class 類名
{
virtual 類型 函數名(參數表)=0;
} 為抽象類。
關於抽象類:
(1).抽象類不能定義對象。
(2).抽象類只能作為基類來使用。
(3).構造函數不能是純虛函數,析構函數可以是純虛函數。
關於虛函數:
(1).只有類的成員函數才能說明為虛函數,因為虛函數僅適用於
繼承關系的類對象,所以普通不能說明為虛函數。
(2).內聯函數不能是虛函數,因為內聯函數是在編譯時決定其位置。
(3).構造函數不能是虛函數,因為構造時對象還是一片未定型的空間。
(4).析構函數可以是虛函數,而且通常聲明為虛函 數。
總結:
(1).當在基類中把成員函數定義為虛函數後,在其派生類中定義的虛函數
必須與基類中的虛函數同名,參數的類型、順序、個數必須一一對應。
(2).實現這種動態的多態性,必須使用基類類型的指針變量或引用,使該
指針指向不同的派生類的對象,並通過調用指針所指的虛函數才能實現動態的多態性。
實現多態的基本步驟:
(1).在基類中,定義成員函數為虛函數(virtual);
(2).定義基類的公有(public)派生類。
(3).在基類的公有派生中“重載”該虛函數。
(4).定義指向基類的指針變量,它指向基類的公有派生類的對象。
註意:重載虛函數不是一般的重載函數,它要求函數名、返回類型、參數個數
參數類型和順序完全相同。
C++多態等知識點