c考題中提到純虛函式是什麼概念?起什麼作用

2021-03-20 03:19:59 字數 3035 閱讀 6753

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樓:匿名使用者

包含純虛函式的類不可以例項化。