1樓:周濤eric玄賧瞟
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是: (1)純虛擬函式只有定義,沒有實現;而虛擬函式既有定義,也有實現的**。
純虛擬函式一般沒有**實現部分,如 virtual void print() = 0; 而一般虛擬函式必須要有**的實現部分
c++中 虛擬函式與純虛擬函式的區別是什麼?
2樓:月無痕
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是:
(1)純虛擬函式只有定義,沒有實現;而虛擬函式既有定義,也有實現的**。
純虛擬函式一般沒有**實現部分,如
virtual void print() = 0;
而一般虛擬函式必須要有**的實現部分,否則會出現函式未定義的錯誤。
virtual void print()
(2)包含純虛擬函式的類不能定義其物件,而包含虛擬函式的則可以。
c/c++面試題:虛擬函式與純虛擬函式有什麼區別
3樓:匿名使用者
虛擬函式和純虛擬函式有以下所示方面的區別
(1)類裡如果聲
明瞭虛擬函式,這個函式是實現的,哪怕是空實現,它的作用就是為了能讓這個函式在它的子類裡面可以被覆蓋,這樣的話,這樣編譯器就可以使用後期繫結來達到多型了。純虛擬函式只是一個介面,是個函式的宣告而已,它要留到子類裡去實現。
(2)虛擬函式在子類裡面也可以不過載的;但純虛擬函式必須在子類去實現,這就像java的介面一樣。通常把很多函式加上virtual,是一個好的習慣,雖然犧牲了一些效能,但是增加了物件導向的多型性,因為很難預料到父類裡面的這個函式不在子類裡面不去修改它的實現。
(3)虛擬函式的類用於「實作繼承」,繼承介面的同時也繼承了父類的實現。當然大家也可以完成自己的實現。純虛擬函式關注的是介面的統一性,實現由子類完成。
(4)帶純虛擬函式的類叫虛基類,這種基類不能直接生成物件,而只有被繼承,並重寫其虛擬函式後,才能使用。這樣的類也叫抽象類。
c++虛擬函式與普通成員函式究竟有什麼本質上的區別?
4樓:匿名使用者
這個區別很重要
在抽象的繼承模型中叫做多型
就是說,你定義一個類,他們具有相同的介面
但是具體的不同的類又有不同的特徵,實現之類可能也完全不同但是你可以用共同的基類指標來管理
虛擬函式在實現的時候,其實是在類裡建了一個隱含的成員變數,是一個指向函式的指標
所以從基類呼叫也可以呼叫到繼承類定義的成員函式。
例子:#include "stdafx.h"
#include
using namespace std;
class a
5樓:韓靚
c++的虛擬函式主要是為了實現多型。基類定義的虛擬函式,派生類重新定義該函式,這樣基類物件指標呼叫哪一個函式是判斷該基類指標的物件的型別。虛擬函式用virtual關鍵字修飾,同時開啟動態聯編技術,動態聯編只有程式執行時才能確定呼叫的函式,在編譯階段是不知道要呼叫哪一個函式。
c++中純虛擬函式和虛擬函式在定義上的區別是什麼
6樓:志祥羅志祥
主要就是純虛擬函式相比虛擬函式在定義的時候沒有定義函式體而且會在定義的時候在後面多加一句「=0」
c++中虛擬函式與純虛擬函式的區別是什麼?
7樓:月無痕
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是:
(1)純虛擬函式只有定義,沒有實現;而虛擬函式既有定義,也有實現的**。
純虛擬函式一般沒有**實現部分,如
virtual void print() = 0;
而一般虛擬函式必須要有**的實現部分,否則會出現函式未定義的錯誤。
virtual void print()
(2)包含純虛擬函式的類不能定義其物件,而包含虛擬函式的則可以。
《c++》中虛擬函式與純虛擬函式的區別是什麼?
8樓:月無痕
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是:
(1)純虛擬函式只有定義,沒有實現;而虛擬函式既有定義,也有實現的**。
純虛擬函式一般沒有**實現部分,如
virtual void print() = 0;
而一般虛擬函式必須要有**的實現部分,否則會出現函式未定義的錯誤。
virtual void print()
(2)包含純虛擬函式的類不能定義其物件,而包含虛擬函式的則可以。
c中的虛擬函式是什麼,c中虛擬函式與純虛擬函式的區別是什麼?
c 中的虛擬函式是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。c 中的虛擬函式的作用主要是實現了多型的機制。關於多型,簡而言之就是用父型別別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。這種技術可以讓父類的指標有 多種形態 這...
《c中虛擬函式與純虛擬函式的區別是什麼
虛擬函式與純虛擬函式 在他們的子類中都可以被重寫。它們的區別是 1 純虛擬函式只有定義,沒有實現 而虛擬函式既有定義,也有實現的 純虛擬函式一般沒有 實現部分,如 virtual void print 0 而一般虛擬函式必須要有 的實現部分,否則會出現函式未定義的錯誤。virtual void pr...
c中純虛擬函式有什麼作用,C 中純虛擬函式有什麼作用
通過它可以指明一個虛擬函式只是提供了一個可被子型別改寫的介面。純虛擬函式是在基類中宣告的虛擬函式,它可以在基類中有定義,而且派生類必須定義自己的實現方法。基類不能生成物件,可以使用指標或者引用派生類物件。基類不在基類中實現純虛擬函式的方法是在函式原型後加 0 virtual void funtion...