請問什麼是純虛類,什麼情況下應用純虛類

2021-04-19 01:29:43 字數 3634 閱讀 4386

1樓:匿名使用者

純虛數是一個在基類中說明的虛數,它在該基類中沒有定義,但要求在它的派生類中必須定義自己的版本,或重新說明為純虛擬函式

純虛類是什麼

2樓:涼念若櫻花妖嬈

純虛類是一種特殊的虛擬函式,定義格式如下:

class 《類名》

其中,《函式名》是什麼是純虛擬函式名。他的實現用賦值偽來表示,被定義為無

純虛類 和抽象類 有什麼關係

3樓:匿名使用者

c++裡沒有來

純虛類這麼一說,倒是源有虛基類這bai麼個說法,抽象類是指du包含一個純虛zhi函式的類,這種類不能被例項dao化,但允許宣告一個指向抽象類的物件的指標.抽象類派生的類如果不對基類的純虛擬函式進行重寫的話,派生類依然是一個抽象類,只有它重寫了其基類的純虛擬函式之後它才不再是一個抽象類

4樓:匿名使用者

抽象類 是指有純需函式的類,這種類只能作為基類使用

純虛類是什麼東西沒聽說過....

純虛類是什麼,有什麼特徵?

5樓:羅朗朗

純虛類是一種特殊的虛

函式,定義格式如下:

class 《類名》

其中,《函式名》是什麼是純虛擬函式名。他的實現用賦值偽來表示,被定義為無

什麼情況下應用純虛類

6樓:犯罪酥

純虛類種特殊虛擬函式定義格式: class 其純虛擬函式名實現用賦值偽表示定

介面與純虛類的區別 20

7樓:匿名使用者

1.相同點

a. 兩者都是抽象類,都不能例項化。

b. inte***ce實現類及abstrct class的子類都必須要實現已經宣告的抽象方法。

2. 不同點

a. inte***ce需要實現,要用implements,而abstract class需要繼承,要用extends。

b. 一個類可以實現多個inte***ce,但一個類只能繼承一個abstract class。

c. inte***ce強調特定功能的實現,而abstract class強調所屬關係。

d. 儘管inte***ce實現類及abstrct class的子類都必須要實現相應的抽象方法,但實現的形式不同。inte***ce中的每一個方法都是抽象方法,都只是宣告的 (declaration, 沒有方法體),實現類必須要實現。

而abstract class的子類可以有選擇地實現。

這個選擇有兩點含義:

一是abastract class中並非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子類必須實現。那些沒有abstract的方法,在abstrct class中必須定義方法體。

二是abstract class的子類在繼承它時,對非抽象方法既可以直接繼承,也可以覆蓋;而對抽象方法,可以選擇實現,也可以通過再次宣告其方法為抽象的方式,無需實現,留給其子類來實現,但此類必須也宣告為抽象類。既是抽象類,當然也不能例項化。

e. abstract class是inte***ce與class的中介。

inte***ce是完全抽象的,只能宣告方法,而且只能宣告pulic的方法,不能宣告private及protected的方法,不能定義方法體,也 不能宣告例項變數。然而,inte***ce卻可以宣告常量變數,並且在jdk中不難找出這種例子。但將常量變數放在inte***ce中違背了其作為接 口的作用而存在的宗旨,也混淆了inte***ce與類的不同價值。

如果的確需要,可以將其放在相應的abstract class或class中。

abstract class在inte***ce及class中起到了承上啟下的作用。一方面,abstract class是抽象的,可以宣告抽象方法,以規範子類必須實現的功能;另一方面,它又可以定義預設的方法體,供子類直接使用或覆蓋。另外,它還可以定義自己 的例項變數,以供子類通過繼承來使用。

3. inte***ce的應用場合

a. 類與類之前需要特定的介面進行協調,而不在乎其如何實現。

b. 作為能夠實現特定功能的標識存在,也可以是什麼介面方法都沒有的純粹標識。

c. 需要將一組類視為單一的類,而呼叫者只通過介面來與這組類發生聯絡。

d. 需要實現特定的多項功能,而這些功能之間可能完全沒有任何聯絡。

4. abstract class的應用場合

一句話,在既需要統一的介面,又需要例項變數或預設的方法的情況下,就可以使用它。最常見的有:

a. 定義了一組介面,但又不想強迫每個實現類都必須實現所有的介面。可以用abstract class定義一組方法體,甚至可以是空方法體,然後由子類選擇自己所感興趣的方法來覆蓋。

b. 某些場合下,只靠純粹的介面不能滿足類與類之間的協調,還必需類中表示狀態的變數來區別不同的關係。abstract的中介作用可以很好地滿足這一點。

c. 規範了一組相互協調的方法,其中一些方法是共同的,與狀態無關的,可以共享的,無需子類分別實現;而另一些方法卻需要各個子類根據自己特定的狀態來實現特定的功能。

首先介面是一種高度抽象的"模版",,而介面中的屬性也就是』模版』的成員,就應當是所有實現"模版"的實現類的共有特性,所以它是public static的 ,是所有實現類共有的 .假如可以是非static的話,因一個類可以繼承多個介面,出現重名的變數,如何區分呢?

其次,介面中如果可能定義非final的變數的話,而方法又都是abstract的,這就自相矛盾了,有可變成員變數但對應的方法卻無法操作這些變數,雖然可以直接修改這些靜態成員變數的值,但所有實現類對應的值都被修改了,這跟抽象類有何區別? 又介面是一種更高層面的抽象,

是一種規範、功能定義的宣告,所有可變的東西都應該歸屬到實現類中,這樣介面才能起到標準化、規範化的作用。所以介面中的屬性必然是final的

c++中是否有虛類的說法,和純虛類和一般抽象類有什麼區別?

8樓:起個名子真挺難

是類似的。同一個概念。

純虛的不能直接例項化,只能被繼承後由子類例項化,以實現多型等。功能上也與介面類似。

帶有純虛擬函式的類是什麼

9樓:匿名使用者

抽象類,不可以產生例項,只能被繼承,且純虛擬函式需在在子類中實現,不然子類也將成為抽象類

什麼是虛擬函式和純虛擬函式,有什麼區別

10樓:

虛擬函式是在基類中作總體框架定義,定義時在函式的返回型別名前加上virtual構成。它的具體不同實現版本是在其類的派生類裡實現的。純虛擬函式是在其類中連基本框架都定義不出來,所以只是用「virtual 型別名 函式名()=0;」的形式來宣告基類中有這麼一個函式,而它的實現則完全由基類的派生類根據不同需要來完成。

有純虛擬函式的基類叫抽象類,不能被例項化(即不能生成物件),只能被繼承。我的理解是:虛擬函式實現的具體版本中總是有通用的部分,這些通用部分可以在基類中定義,而純虛擬函式則完全沒有能共用的部分,完全是由派生類中不同的實現完成的。

供參考……

11樓:匿名使用者

自己看書吧,書上說的比誰都清楚。推薦一本, c++ primer plus...

什麼情況下用Thetors,什麼情況下用Thedoctors

b doctors 是指泛指。the 用於特指或者獨一無二的東西 在什麼情況下使用?蕓薹素內脂作用 來 1 促進細 自胞 促進果實膨大 對細胞的 有明顯的促進作用,對器官的橫向生長和縱向生長都有促進作用,從而起到膨大果實的作用。2 延緩葉片衰老,保綠時間長,加強葉綠素合成,提高光合作用,促使葉色加深...

灌木栽植什麼情況下要帶土球,什麼情況下是裸根

1 凡常綠樹和落葉樹非休眠期移植或需較長時間假植的樹木均應採取帶土球法移植,一般幹徑15 20cm,土質堅硬可採用軟包裝土球法移植,土球直徑1.5 1.8m。幹徑20 40cm採用方木箱移植法,方箱規格為1.8 3m。一般土球,大木箱規格為幹徑的7 9倍。2 凡休眠期移植落葉樹均可裸根移植或裸根少量...

在英語中什麼情況下用in什麼情況下用on

in表示在裡面,on表示在表面 牆上有洞用in,牆上有畫用on。on 有時表示是本身的一部分。如 蘋果在樹上用on,猴子在樹上用in.窗戶嵌入復 牆體內,所以用 in。一幅制畫掛在牆bai上用on。電視上不是真du的在電視裡zhi面,習慣用on星期幾dao用on,on monday 幾點鐘用at,a...