C 純虛函式與抽象類

2021-06-05 13:59:30 字數 943 閱讀 9338

純虛函式:

純虛函式:在基類中將某一成員函式定為虛函式,並不是基類本身的需要,而是考慮到派生類的需

要,在基類中預留了乙個函式名,具體功能留給派生類根據需要去定義。

純虛函式是在宣告虛函式時被「初始化」為0的函式。

一般形式為:

virtual 函式型別 函式名(引數列表)=0;

如:virtual float area()const=0;

注意:1、虛函式沒有函式體;

2、最後面的「=0」並不表示函式的返回值為0,它只是起形式上的作用,告訴編譯器「這是純虛函

數」;2、這是乙個宣告語句,最後應有分號;

要點:1、純虛函式只有函式的名字,而不具有函式的功能,不能被呼叫。可以說他是「徒有其表,而無

其實」。它只是通知編譯系統:「這裡宣告乙個虛函式,留待派生類中定義」。在派生類中對此函

數提供定義後,它才能具備函式的功能,可以被呼叫。

2、純虛函式的作用是在基類中為其派生類保留乙個函式名字,以便派生類根據需要對它定義。如

果在其基類中沒有保留函式名字,則無法實現多型性。

3、如果在乙個類中宣告了純虛函式,而在其派生類中沒有對該函式定義,則該虛函式在派生類中

仍為純虛函式。

抽象類:

抽象類:不要來定義物件,而只作為一種基本型別用作繼承類。由於經常作為基類,通常稱為抽象

基類。 注:

1、凡是包含純虛函式的類都是抽象類。因為純虛函式不能被呼叫,包含純虛函式的類是無法建立

物件的。

2、抽象類的作用是作為乙個類族的公共基類,或者說,為乙個類族提供乙個公共介面。

3、如果在抽象類所派生出的新類中對基類的所有純虛函式進行了定義,那麼這些函式就被賦予了

功能,可以被呼叫。這個派生類就不是抽象類,而是可以用來定義物件的具體類。

4、如果在派生類中沒有對所有的虛函式進行定義,則此派生類仍是抽象類,不能用來定義物件。

C 純虛函式與抽象類

在很多的情況下,在基類中一般都不能給出虛函式的具體而有意義的定義,這時我們就可以將它說明為純虛函式。它的具體的定義由它的派生類具體完成,這樣可以使類之間的結構更加清晰,同時也更容易理解。含有純虛函式的類叫抽象類。說明純虛函式的一般格式 class 類名 virtual 返回值型別 函式名 引數列表 ...

C 純虛函式與抽象類

參考 純虛函式 是一種特殊的虛函式,是基類中只有宣告,無 法實現 定義的虛函式。含有純虛函式的類稱為 抽象類 ifndef purevir h define purevir h define pi 3.14159 namespace purev 基類為 抽象類 的派生類都必須定義自己的,和純虛函式同...

C 抽象類與純虛函式

抽象類是為了抽象和設計的目的而建立的,處於繼承層次結構的上層。定義了純虛函式的類就是抽象類。具體類是能夠建立物件的類。抽象類的規定 1 抽象類只能用作其他類的基類,不能建立抽象類物件。2 抽象類不能用作引數型別 函式返回型別或顯式轉換的型別。3 可以定義指向抽象類的指標和引用,此指標可以指向它的派生...