c++中虛函數、純虛函數和抽象類、多態性的概念

1、純虛函數(pure virtual)

純虛函數的定義形式:virtual { } = 0;

純虛函數就是基類只聲明函數體,沒有實現過程。時對子類的約束,是接口繼承。

2、虛函數(Impure virtual)

虛函數的定義形式:virtual {method body};

c++的虛函數是基類提供虛函數的實現,爲子類提供默認的函數實現。子類可以重寫基類的虛函數實現子類的特殊化。

虛函數具體指定接口繼承和缺省實現繼承

3、普通函數(Non-virtual)

普通函數是靜態編譯的,沒有運行時多態。如果成員函數聲明爲普通函數,代表子類中不可改變其函數行爲。

普通函數代表的意義是不變形凌駕於特異性。

普通函數具體指定接口繼承以及強制性實現繼承

4、抽象類

含有純虛函數的類被稱作抽象類,而只含虛函數的類不能被稱作抽象類。

抽象類是不能使用new創建新對象的,也就是抽象類不能被實例化,只有抽象類的派生類纔可以用new創建對象。

class Shape{
public:
	virtual void draw() const = 0;
};

Shape* ps = new Shape;  //不能夠創建抽象類的實體,這句話是錯誤的

5、多態性

多態性是指相同對象收到不同消息或者不同對象收到相同消息時產生不同的實現動作。c++支持兩種多態性:編譯時多態性、運行時多態性。

編譯時多態性:通過重載函數實現。

運行時多態性:通過虛函數實現。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章