c 中虛函式和純虛函式的作用與區別

2021-03-22 02:26:38 字數 2535 閱讀 7140

1樓:匿名使用者

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

c++中 虛函式與純虛函式的區別是什麼?

2樓:月無痕

虛函式與純虛函式 在他們的子類中都可以被重寫。它們的區別是:

(1)純虛函式只有定義,沒有實現;而虛函式既有定義,也有實現的**。

純虛函式一般沒有**實現部分,如

virtual void print() = 0;

而一般虛函式必須要有**的實現部分,否則會出現函式未定義的錯誤。

virtual void print()

(2)包含純虛函式的類不能定義其物件,而包含虛函式的則可以。

c++中虛函式和純虛函式有什麼區別?

3樓:鍋勁

使用虛函式,我們可以靈活的進行動態繫結,當然是以一定的開銷為代價。 如果父類的函式(方法)根本沒有必要或者無法實現,完全要依賴子類去實現的話,可以把此函式(方法)設為virtual 函式名=0 我們把這樣的函式(方法)稱為純虛函式。

也就是說,虛函式 ,子類可以不重寫,直接繼承父類 的方法來使用,也可以重寫

但是 純虛函式是子類是必須重寫了才可以使用

4樓:衄潲

純虛函式,沒有方法體,留給子類去實現。而虛函式必須有方法體,子類可以重寫,也可以不重寫

5樓:匿名使用者

虛函式可是實現方法

純虛函式沒有函式體,也就是不能實現方法,只能給後面的派生類供宣告,後面跟著=0;

有純虛函式一般為抽象基類

6樓:匿名使用者

避免繼承帶來的二義性

c++中虛函式與純虛函式的區別是什麼?

7樓:月無痕

虛函式與純虛函式 在他們的子類中都可以被重寫。它們的區別是:

(1)純虛函式只有定義,沒有實現;而虛函式既有定義,也有實現的**。

純虛函式一般沒有**實現部分,如

virtual void print() = 0;

而一般虛函式必須要有**的實現部分,否則會出現函式未定義的錯誤。

virtual void print()

(2)包含純虛函式的類不能定義其物件,而包含虛函式的則可以。

c/c++面試題:虛函式與純虛函式有什麼區別

《c++》中虛函式與純虛函式的區別是什麼?

8樓:月無痕

虛函式與純虛函式 在他們的子類中都可以被重寫。它們的區別是:

(1)純虛函式只有定義,沒有實現;而虛函式既有定義,也有實現的**。

純虛函式一般沒有**實現部分,如

virtual void print() = 0;

而一般虛函式必須要有**的實現部分,否則會出現函式未定義的錯誤。

virtual void print()

(2)包含純虛函式的類不能定義其物件,而包含虛函式的則可以。

c++中的純虛函式與虛函式在應用上有什麼差別??

9樓:

純虛函式就是為了阻止這個類的例項化。使其成為抽象類。

當然虛函式不提供實現看起來也能阻止類的例項化,但它和純虛函式比起來還有以下不足:

1、一方面,從語法上說是不清晰的,你的類的使用者在在看到你的類的定義的時候無法確定哪些函式是沒有提供實現的虛函式,而如果你寫成純虛函式就非常明確,一眼就可以看出來。

2、另一方面,虛函式不提供實現,如果使用者試圖例項化這個類,在編譯階段無法發現錯誤,必須等到鏈結階段才能發現,而且鏈結錯誤也僅僅是「無法解析的外部符號」,這種錯誤提示很不明確,當錯誤較多時很難找到真正的原因。 而如果是純虛函式則編譯器在編譯階段就直接會報錯,並且會在錯誤中明確告知使用者不應例項化抽象類,非常便於定位錯誤。

10樓:匿名使用者

如果乙個類中含有純虛函式, 則這個類則被視為抽象基類, 無法例項化, 即不能生成以這個基類為型別的例項.

(注意, 為了實現多型, 這個基類的指標是可以被建立並指向繼承這個基類的例項)

虛函式可以被實現, 也可以被覆蓋(也可以不被覆蓋, 視乎繼承類是否有重新實現這個函式). 呼叫時究竟使用哪個過程取決於呼叫的物件是基類物件還是繼承類物件.

純虛函式不能被實現, 因此強制要求所有的繼承類去覆蓋這個純虛函式, 否則不讓編譯通過.

==== 分割線 ====

2015.3.18

純虛函式也可以有實現。

c++虛函式和純虛函式的區別

11樓:小雨田大

定義乙個函式為虛函式,不代表函式為不被實現的函式。

定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式。

定義乙個函式為純虛函式,才代表函式沒有被實現。

參考

c中虛函式與純虛函式的區別是什麼

虛函式與純虛函式 在他們的子類中都可以被重寫。它們的區別是 1 純虛函式只有定義,沒有實現 而虛函式既有定義,也有實現的 純虛函式一般沒有 實現部分,如 virtual void print 0 而一般虛函式必須要有 的實現部分,否則會出現函式未定義的錯誤。virtual void print 2 ...

虛函式有什麼特點,虛函式和抽象函式有什麼區別?

定義虛函式必須是基類的非靜態成員函式,其訪問許可權可以是protected或public,在基類的類定義中定義虛函式的一般形式 virtual 函式返回值型別 虛函式名 形參表 編輯本段作用 虛函式的作用是實現動態聯編,也就是在程式的執行階段動態地選擇合適的成員函式,在定義了虛函式後,可以在基類的派...

C中虛函式,虛基類,virtual的用法我很暈,高手能幫

c 中有繼承的概念,即乙個基類總領一組的類!而虛函式就是把這一組的類共同的特徵和行為抽出來,放在基類裡面,好比宣告,而具體到每個派生類時,再把這個特徵和行為 函式 描述出來。好處就是利用向上轉型這個特點,使用基類的物件來呼叫這一組類的物件的函式。比如定義乙個基類動物,派生貓,狗等等,我就可以在動物類...