1樓:
純虛函式(我的解釋不官方,希望能幫助你理解):1.什麼是純虛函式; 基類中,使用 virtual 函式名() = 0;的寫法就是純虛函式了。
2.用處 。在基類中不能對虛函式給出有意義的實現,就把它宣告為純虛函式
3.用法。含有純虛函式的類,叫做虛基類。 虛基類不能例項化。子類去實現這個純虛函式後,才能例項化
個人理解的它最重要的作用:強制子類重寫該函式。
2樓:匿名使用者
通過純虛函式的方式,可以指明乙個虛函式只是提供了乙個可被子型別改寫的介面。
純虛函式是在基類中宣告的虛函式,它可以在基類中有定義,而且派生類必須定義自己的實現方法。基類不能生成物件,可以使用指標或者引用派生類物件。基類不在基類中實現純虛函式的方法是在函式原型後加「=0」
virtual void funtion1()=0
引入原因/純虛函式的作用
為了方便使用多型特性,我們常常需要在基類中定義虛函式。
在很多情況下,基類本身生成物件是不合情理的。例如,動物作為乙個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。
為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式(方法:virtual returntype function()=
0;),則編譯器要求在派生類中必須予以重寫以實現多型性。同時含有純虛函式的類稱為抽象類,它不能生成物件。這樣就很好地解決了上述兩個問題。
3樓:西晉溝贍
如今與你要面對多少傷痛和迷惑
c++中純虛函式有什麼作用?
4樓:何度千尋
通過它可以指明乙個虛函式只是提供了乙個可被子型別改寫的介面。
純虛函式是在基類中宣告的虛函式,它可以在基類中有定義,而且派生類必須定義自己的實現方法。基類不能生成物件,可以使用指標或者引用派生類物件。基類不在基類中實現純虛函式的方法是在函式原型後加「=0」
virtual void funtion1()=0引入原因/純虛函式的作用
為了方便使用多型特性,我們常常需要在基類中定義虛函式。
在很多情況下,基類本身生成物件是不合情理的。例如,動物作為乙個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。
為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式(方法:virtual returntype function()= 0;),則編譯器要求在派生類中必須予以重寫以實現多型性。同時含有純虛函式的類稱為抽象類,它不能生成物件。
這樣就很好地解決了上述兩個問題。
5樓:匿名使用者
1。父類中如果都是純虛函式,那麼此父類可以作為介面(inte***ce)。
2。父類中存在純虛函式,子類中重寫(override)該函式,可實現多型。
c++中,純虛函式有什麼作用呢??真不明白,這個會用得很廣泛麼?
6樓:殤年【記憶
c++中,純虛函式只能在抽象類裡定義,主要用處就是繼承抽象類的子類可以重寫這個純虛函式,用於多型的程式設計
至於廣泛不?不是很清楚,個人覺得應該挺廣泛的。
c/c++面試題:虛函式與純虛函式有什麼區別
c++裡定義純虛函式
7樓:
你概念有點混淆了,這個virtual void fun()=0; 是純虛函式;virtual void fun(); 是虛函式。它們是有區別的。有純虛函式的類一般都是虛基類,主要用於繼承,讓子類來實現虛函式。
虛函式的作用當然是多型了~~
class base
{public:
void base::fun() {cout<<"base" return 0; } 如果fun 是虛函式顯示什麼,不是虛函式顯示什麼?自己試試 c++中純虛函式可以有函式體嗎? 8樓:匿名使用者 可以有,但是沒必要這樣做,好得設計不會這樣設計的。這只是概念問題。知道可以就可以了 1l說的不確切。純虛函式新增函式體,依舊為純虛函式,類依舊是抽象類,不能例項化 2l說的很明確,既然純虛函式所在的類為抽象,那麼為純虛函式新增函式體是完全沒有必要的。可以有函式體,但是這不是一種好得設計方式。既然是公共介面,新增函式體多此一舉。 9樓:匿名使用者 ***下面是我暫時想到的,不知道我的理解是否正確*** *** 如果學習c++ 的話,不防看看《c++ 程式設計思想》兩卷 *** 為什麼要引入純虛函式?如果它有了函式體,那它還是純虛函式嗎? 1) 含有純虛函式的類叫做抽象類,抽象類從概念上理解,就是不能例項化物件。 如 對於下面的類來說, class abstractc ;當宣告乙個abstractc objab; 時就會報error。 但從implementation 實現來理解,抽象類物件可以作為乙個佔位符(只能使用指標或引用) void globalfun( abstractc *inputobj); 即任何實現了abstractc的類都是可以作為globalfun的引數。(這裡是pubblic inheritation, 但不能引入新的函式,除非做型別轉換)。 2) 如果它有了函式體,即如下: class abstractc };因為任何包含純虛函式的類都是抽象類,即abstractc不能宣告物件,不能例項化物件。那麼這個類的成員函式的函式體能做什麼??所以,加個函式體,就是非常非常不必要了。 因此,純虛函式是為了定義抽象類(如abstractc),抽象類可以作為公共介面(如globalfun)來使用。 10樓:匿名使用者 不能有,有了就不叫純虛了。 c++中虛函式和純虛函式的作用與區別 11樓:匿名使用者 包含純虛函式的類不可以例項化。